diff --git a/sdks/db/cached-method-objects/from-custom-request_bl.ink.yaml b/sdks/db/cached-method-objects/from-custom-request_bl.ink.yaml index 21d2f1dce..4449e0759 100644 --- a/sdks/db/cached-method-objects/from-custom-request_bl.ink.yaml +++ b/sdks/db/cached-method-objects/from-custom-request_bl.ink.yaml @@ -1,4 +1,4 @@ -hash: fd89e837380e490f714f3341f2d91b6ff6765c7f4d3b255bf65e4bef6843deb5 +hash: 703f10005811ace257b9a27d8e812bf1d942864bcba72473ceeefb1c9791470c methodObjects: - url: /validate_login method: information diff --git a/sdks/db/cached-method-objects/from-custom-request_recruiterflow.com.yaml b/sdks/db/cached-method-objects/from-custom-request_recruiterflow.com.yaml index bdaaad732..b6c3355c3 100644 --- a/sdks/db/cached-method-objects/from-custom-request_recruiterflow.com.yaml +++ b/sdks/db/cached-method-objects/from-custom-request_recruiterflow.com.yaml @@ -1,4 +1,4 @@ -hash: 8a159f06c2b91ef7e2bd050c999a8be1cd96d65748776593a2cf8a1e520b8dfb +hash: 0d575431b979964bb369a154c8640e4948f7d170d5d9b4992f5d658a1b5442e5 methodObjects: - url: /api/external/campaign/add-to-campaign method: addToCampaign diff --git a/sdks/db/cached-method-objects/from-custom-request_smartrecruiters.com.yaml b/sdks/db/cached-method-objects/from-custom-request_smartrecruiters.com.yaml new file mode 100644 index 000000000..a86a4875a --- /dev/null +++ b/sdks/db/cached-method-objects/from-custom-request_smartrecruiters.com.yaml @@ -0,0 +1,6049 @@ +hash: 6dc5eb1d1a06cc3f07d540a82fe0ee61feb9f75a4d6a6a701894f18eb5881544 +methodObjects: + - url: /postings/{uuid}/candidates + method: createNewCandidateApplication + httpMethod: post + tag: Application API + typeScriptTag: applicationApi + description: Create a New Candidate Application + parameters: + - name: uuid + schema: string + required: true + description: Posting UUID + example: UUID + - name: tags + schema: array + required: false + description: '' + - name: firstName + schema: string + required: true + description: '' + example: FIRSTNAME + - name: lastName + schema: string + required: true + description: '' + example: LASTNAME + - name: email + schema: string + required: true + description: '' + example: EMAIL + - name: createJoinLink + schema: boolean + required: false + description: '' + - name: conditionalsIncluded + schema: boolean + required: false + description: '' + - name: phoneNumber + schema: string + required: false + description: '' + - name: location + schema: object + required: false + description: '' + - name: web + schema: object + required: false + description: '' + - name: education + schema: array + required: false + description: '' + - name: experience + schema: array + required: false + description: '' + - name: sourceDetails + schema: object + required: false + description: '' + - name: resume + schema: object + required: false + description: '' + - name: avatar + schema: object + required: false + description: '' + - name: attachments + schema: array + required: false + description: '' + - name: answers + schema: array + required: false + description: '' + - name: messageToHiringManager + schema: string + required: false + description: '' + - name: consent + schema: boolean + required: false + description: '' + - name: consentDecisions + schema: object + required: false + description: '' + - name: internal + schema: boolean + required: false + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '429' + description: '' + - statusCode: '500' + description: '' + - url: /postings/{uuid}/candidates/{candidateId}/status + method: getCandidateStatus + httpMethod: get + tag: Application API + typeScriptTag: applicationApi + description: Get candidate status + parameters: + - name: uuid + schema: string + required: true + description: Posting UUID + example: UUID + - name: candidateId + schema: string + required: true + description: '' + example: CANDIDATEID + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '429' + description: '' + - statusCode: '500' + description: '' + - url: /postings/{uuid}/configuration + method: getPostingConfiguration + httpMethod: get + tag: Application API + typeScriptTag: applicationApi + description: Get application configuration for posting + parameters: + - name: acceptLanguage + schema: string + description: Language for screening questions. By default 'en'. + - name: uuid + schema: string + required: true + description: Posting UUID + example: UUID + - name: conditionalsIncluded + schema: boolean + description: > + Specifies whether conditional questions should be returned in the + response. 'false' if not specified + + - Only available for BETA customers + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '429' + description: '' + - statusCode: '500' + description: '' + - url: /approvals/{approvalRequestId} + method: getById + httpMethod: get + tag: approvals + typeScriptTag: approvals + description: Get approval request by id + parameters: + - name: approvalRequestId + schema: string + required: true + description: Approval request identifier + example: APPROVALREQUESTID + responses: + - statusCode: '200' + description: Approval request + - statusCode: '404' + description: '' + - url: /approvals/{approvalRequestId}/comments + method: getComments + httpMethod: get + tag: approvals + typeScriptTag: approvals + description: Get comments for given approval request + parameters: + - name: approvalRequestId + schema: string + required: true + description: Approval request identifier + example: APPROVALREQUESTID + responses: + - statusCode: '200' + description: '' + - statusCode: '404' + description: '' + - url: /approvals/{approvalRequestId}/comments + method: addCommentToRequest + httpMethod: post + tag: approvals + typeScriptTag: approvals + description: Add comment to given approval request + parameters: + - name: approvalRequestId + schema: string + required: true + description: Approval request identifier + example: APPROVALREQUESTID + - name: content + schema: string + required: true + description: '' + example: CONTENT + - name: authorId + schema: string + required: true + description: '' + example: AUTHORID + responses: + - statusCode: '201' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '422' + description: Input validation fails + - url: /approvals + method: getPendingRequests + httpMethod: get + tag: approvals + typeScriptTag: approvals + description: Get pending approvals requests where you are an approver. + parameters: + - name: pageId + schema: string + required: false + description: > + Identifier for the paged list of approval requests. To get the first + page of approval request, leave it blank. + responses: + - statusCode: '200' + description: Approval requests + - statusCode: '400' + description: '' + - url: /approvals + method: createApprovalRequest + httpMethod: post + tag: approvals + typeScriptTag: approvals + description: Create approval request + parameters: + - name: baseId + schema: string + required: true + description: '' + example: BASEID + - name: type + schema: string + required: true + description: '' + example: TYPE + - name: decisionMode + schema: string + required: true + description: '' + example: DECISIONMODE + - name: steps + schema: array + required: true + description: '' + responses: + - statusCode: '201' + description: Approval request + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - url: /approvals/{approvalRequestId}/approve-decisions + method: approveDecisions + httpMethod: post + tag: approvals + typeScriptTag: approvals + description: Approve the approval request by id + parameters: + - name: approvalRequestId + schema: string + required: true + description: Approval request identifier + example: APPROVALREQUESTID + - name: approverId + schema: string + required: true + description: '' + example: APPROVERID + responses: + - statusCode: '204' + description: Approval request approved + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /approvals/{approvalRequestId}/reject-decisions + method: rejectRequestById + httpMethod: post + tag: approvals + typeScriptTag: approvals + description: Reject the approval request by id + parameters: + - name: approvalRequestId + schema: string + required: true + description: Approval request identifier + example: APPROVALREQUESTID + - name: approverId + schema: string + required: true + description: '' + example: APPROVERID + - name: comment + schema: string + required: true + description: '' + example: COMMENT + responses: + - statusCode: '204' + description: Approval request rejected + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /partner/configuration + method: getDetails + httpMethod: get + tag: configuration + typeScriptTag: configuration + description: get partner configuration + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /partner/configuration + method: savePartnerConfig + httpMethod: put + tag: configuration + typeScriptTag: configuration + description: saves configuration for partner + parameters: + - name: consentUrl + schema: string + required: true + description: '' + example: CONSENTURL + - name: consentDisplayMode + schema: string + required: true + description: '' + example: CONSENTDISPLAYMODE + - name: assessmentPackageListUrl + schema: string + required: true + description: '' + example: ASSESSMENTPACKAGELISTURL + - name: singleAssessmentPackageUrl + schema: string + required: true + description: '' + example: SINGLEASSESSMENTPACKAGEURL + - name: packageOrderUrl + schema: string + required: false + description: '' + - name: inlineAssessmentPackageOrderUrl + schema: string + required: false + description: '' + - name: oauthTokenUrl + schema: string + required: true + description: '' + example: OAUTHTOKENURL + - name: integrationDisableUrl + schema: string + required: false + description: '' + - name: fields + schema: array + required: false + description: '' + - name: supportedAssessmentTypes + schema: array + required: true + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - url: /integration/company/{companyId} + method: integrationSetup + httpMethod: post + tag: integration + typeScriptTag: integration + description: enable the company integration + parameters: + - name: companyId + schema: string + required: true + description: '' + example: COMPANYID + - name: clientId + schema: string + required: true + description: '' + example: CLIENTID + - name: clientSecret + schema: string + required: true + description: '' + example: CLIENTSECRET + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - statusCode: '409' + description: '' + - url: /orders/{orderId}/results + method: updatePackageResult + httpMethod: patch + tag: result + typeScriptTag: result + description: updates package result + parameters: + - name: orderId + schema: string + required: true + description: Order ID + example: ORDERID + - name: summary + schema: string + description: '' + - name: description + schema: string + description: '' + - name: assessmentPackageDate + schema: string + description: '' + - name: submissionDate + schema: string + description: '' + - name: name + schema: string + description: '' + - name: status + schema: string + description: '' + - name: score + schema: object + description: '' + example: >- + {raw:28, min:20, max:80} gives a normalized 13% or label '28/80' (min + is not presented in label) + - name: scoreLabel + schema: string + description: '' + - name: attachments + schema: array + description: '' + - name: assessmentResults + schema: array + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - statusCode: '415' + description: '' + - url: /orders/{orderId}/results/attachment + method: addAttachmentToOrder + httpMethod: post + tag: result + typeScriptTag: result + description: add attachment to order + parameters: + - name: orderId + schema: string + required: true + description: Order ID + example: ORDERID + responses: + - statusCode: '201' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /integration + method: showConsentFormOnPartnerSide + httpMethod: get + tag: integration + typeScriptTag: integration + description: Shows consent form on partner side + parameters: + - name: companyId + schema: string + description: id of company setting up the integration + responses: + - statusCode: '200' + description: '' + - url: /integrations/companies/{companyId} + method: removeIntegrationOnPartnerSide + httpMethod: delete + tag: integration + typeScriptTag: integration + description: Removes integration on partner side + parameters: + - name: companyId + schema: string + required: true + description: id of company with integration + example: COMPANYID + responses: + - statusCode: '204' + description: '' + - url: /packages + method: getList + httpMethod: get + tag: packages + typeScriptTag: packages + description: Retrieves a list of packages + parameters: + - name: requester + schema: object + required: false + description: Information about recruiter requesting list of packages + - name: countryCode + schema: string + required: false + description: country code + - name: regionAbbr + schema: string + required: false + description: region abbreviation + - name: city + schema: string + required: false + description: city + - name: address + schema: string + required: false + description: address + - name: postalCode + schema: string + required: false + description: postal code + - name: remote + schema: boolean + required: false + description: describe whether job is remote or not + - name: partnerFieldId + schema: string + required: false + description: >- + Example partner field. Partner defines list of allowed fields in + configuration. Client binds job fields in his configuration. All + fields with non-empty values will be included in this call. + responses: + - statusCode: '200' + description: '' + - statusCode: '204' + description: Returned when there are not packages to present + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - url: /packages/{assessmentPackageId} + method: getById + httpMethod: get + tag: packages + typeScriptTag: packages + description: Retrieves a package by id + parameters: + - name: assessmentPackageId + schema: string + required: true + description: '' + example: ASSESSMENTPACKAGEID + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /packages/orders + method: assessPackageForCandidate + httpMethod: post + tag: orders + typeScriptTag: orders + description: Orders assessment package for candidate + parameters: + - name: resultCallbackURL + schema: string + required: true + description: '' + example: RESULTCALLBACKURL + - name: candidate + schema: object + required: true + description: '' + - name: job + schema: object + required: true + description: '' + - name: requester + schema: object + required: false + description: '' + - name: assessmentPackageId + schema: string + required: true + description: '' + example: ASSESSMENTPACKAGEID + - name: jobId + schema: string + required: true + description: '' + example: JOBID + - name: companyId + schema: string + required: true + description: '' + example: COMPANYID + - name: fields + schema: object + required: false + description: '' + example: + partner-field-id: partner-field-value + responses: + - statusCode: '202' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /packages/inline/orders + method: assessPackageForCandidate + httpMethod: post + tag: orders + typeScriptTag: orders + description: Orders inline assessment package for candidate + parameters: + - name: resultCallbackURL + schema: string + required: true + description: '' + example: RESULTCALLBACKURL + - name: candidate + schema: object + required: true + description: '' + - name: job + schema: object + required: true + description: '' + - name: assessmentPackageId + schema: string + required: true + description: '' + example: ASSESSMENTPACKAGEID + - name: jobId + schema: string + required: true + description: '' + example: JOBID + - name: companyId + schema: string + required: true + description: '' + example: COMPANYID + - name: completedAssessmentCallbackUrl + schema: string + required: true + description: '' + example: COMPLETEDASSESSMENTCALLBACKURL + - name: fields + schema: object + required: false + description: '' + example: + partner-field-id: partner-field-value + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /oauth/token + method: exchangeCredentialsForAccessToken + httpMethod: post + tag: token + typeScriptTag: token + description: Exchange credentials for an access token + parameters: + - name: grant_type + schema: string + required: true + description: '' + example: GRANT_TYPE + - name: client_id + schema: string + required: true + description: '' + example: CLIENT_ID + - name: client_secret + schema: string + required: true + description: '' + example: CLIENT_SECRET + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - url: /assessment-orders + method: getAllForApplication + httpMethod: get + tag: assessment orders + typeScriptTag: assessmentOrders + description: Retrieves all assessment orders for specified application + parameters: + - name: applicationId + schema: string + required: true + description: ID of the application + example: APPLICATIONID + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - url: /audit-events + method: listEvents + httpMethod: get + tag: audit + typeScriptTag: audit + description: List audit events + parameters: + - name: eventDateAfter + schema: string + description: >- + ISO8601-formatted time boundaries for the event time, Format: + yyyy-MM-ddTHH:mm:ss.SSSZZ (example: 2023-01-21T12:50:02.594Z) + - name: eventDateBefore + schema: string + description: >- + ISO8601-formatted time boundaries for the event time, Format: + yyyy-MM-ddTHH:mm:ss.SSSZZ (example: 2023-01-21T12:50:02.594Z) + - name: eventName + schema: array + description: Name of the event + default: + - USER_ACCOUNT_ACTIVATED + - USER_ACCOUNT_CREATED + - USER_ACCOUNT_DEACTIVATED + - USER_ACCOUNT_UPDATED + - USER_AUTHENTICATION_INVALID_CREDENTIALS + - USER_AUTHENTICATION_SUCCESS + - USER_PASSWORD_CHANGED + - USER_PASSWORD_RESET + - USER_ROLE_CHANGED + - USER_API_KEY_RENEWED + - CREDENTIALS_CREATED + - CREDENTIALS_CHANGED + - CREDENTIALS_REVOKED + - SEARCH + - JOB_DELETED + - HIRING_TEAM_MEMBER_ADDED + - HIRING_TEAM_MEMBER_REMOVED + - HIRING_TEAM_ROLE_UPDATED + - APPROVAL_DELEGATION_FROM_USER_CREATED + - APPROVAL_DELEGATION_FROM_USER_CANCELLED + - APPROVAL_DELEGATION_TO_USER_CREATED + - APPROVAL_DELEGATION_TO_USER_CANCELLED + - JOB_APPROVAL_REQUESTED + - JOB_APPROVAL_APPROVED + - JOB_APPROVAL_REJECTED + - JOB_APPROVAL_ABANDONED + - JOB_APPROVAL_STEP_APPROVED + - JOB_APPROVAL_STEP_REJECTED + - JOB_APPROVAL_STEP_SKIPPED + - JOB_APPROVAL_STEP_DELEGATED + - OFFER_APPROVAL_APPROVED + - OFFER_APPROVAL_REJECTED + - OFFER_APPROVAL_ABANDONED + - OFFER_APPROVAL_STEP_APPROVED + - OFFER_APPROVAL_STEP_REJECTED + - OFFER_APPROVAL_STEP_SKIPPED + - OFFER_APPROVAL_STEP_DELEGATED + - OFFER_ACCEPTED + - OFFER_DECLINED + - CANDIDATE_PERSONAL_DATA_MODIFIED + - CANDIDATE_PROFILE_MODIFIED + - CANDIDATE_DELETED + - CANDIDATE_PROFILE_OPENED + - CANDIDATE_EEO_FILLED + - CANDIDATE_PROFILE_UPDATED_DUE_TO_MERGE + - CANDIDATE_DELETED_DUE_TO_MERGE + - CANDIDATE_TAGS_MODIFIED + - APPLICATION_PROPERTIES_UPDATED + - APPLICATION_SOURCE_MODIFIED + - ONBOARDING_STATUS_UPDATED + - JOB_APPLICATION_CREATED + - JOB_APPLICATION_STATE_MODIFIED + - LRSC_CONSENT_GIVEN + - OAUTH_APPLICATION_ACCESS_GRANTED + - JOB_PROPERTY_CREATED + - JOB_PROPERTY_UPDATED + - JOB_PROPERTY_ACTIVATED + - JOB_PROPERTY_DEACTIVATED + - JOB_PROPERTY_UPDATED_VALUES + - JOB_PROPERTY_UPDATED_VALUE + - JOB_PROPERTY_ADDED_VALUE + - JOB_PROPERTY_ARCHIVED_VALUE + - JOB_PROPERTY_DEPENDENT_PROPERTIES_UPDATED + - JOB_PROPERTY_DEPENDENT_VALUES_UPDATED + - JOB_PROPERTIES_CHANGED + - POSITION_UPDATED + - POSITION_DELETED + - POSITION_CREATED + - POSITION_ASSIGNED + - CANCEL_NOT_FILLED_POSITION + - JOB_AD_CREATED + - JOB_AD_UPDATED + - JOB_AD_DELETED + - ONBOARDING_PROCESS_DELETED + - CUSTOMER_REPORT_DOWNLOADED + - name: authorType + schema: array + description: Type of the author who generated the event + default: + - USER + - SUPPORT_USER + - SYSTEM + - CANDIDATE + - name: authorId + schema: string + description: Unique identifier of the author + - name: entityType + schema: array + description: Type of the entity that the event is related to + default: + - USER + - CANDIDATE + - APPLICATION + - OFFER + - JOB + - COMPANY + - JOB_PROPERTY + - JOB_AD + - CREDENTIAL + - REPORT_FILE + - ONBOARDING_PROCESS + - name: entityId + schema: string + description: Unique identifier of the entity that the event is related to + - name: nextPageId + schema: string + description: Unique identifier for the next page of events + - name: limit + schema: integer + description: Number of audit events to return. Maximum value is 100. + default: 10 + responses: + - statusCode: '200' + description: '' + - statusCode: '403' + description: '' + - url: /candidates/{id}/tags + method: removeTags + httpMethod: delete + tag: candidates + typeScriptTag: candidates + description: Delete tags for a candidate + parameters: [] + responses: + - statusCode: '204' + description: Candidate's tags successfully deleted + - statusCode: '403' + description: '' + - url: /candidates/{id}/tags + method: getTags + httpMethod: get + tag: candidates + typeScriptTag: candidates + description: Get tags for a candidate + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '403' + description: '' + - url: /candidates/{id}/tags + method: addTagsToCandidate + httpMethod: post + tag: candidates + typeScriptTag: candidates + description: Add tags to a candidate + parameters: + - name: tags + schema: array + required: true + description: '' + responses: + - statusCode: '201' + description: '' + - statusCode: '400' + description: '' + - statusCode: '403' + description: '' + - url: /candidates/{id}/tags + method: updateCandidateTags + httpMethod: put + tag: candidates + typeScriptTag: candidates + description: Update tags for a candidate + parameters: + - name: tags + schema: array + required: true + description: '' + responses: + - statusCode: '201' + description: '' + - statusCode: '403' + description: '' + - url: /candidates/{id}/onboardingStatus + method: getOnboardingStatus + httpMethod: get + tag: candidates + typeScriptTag: candidates + description: Get Onboarding Status for a candidate + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /candidates/{id}/onboardingStatus + method: setOnboardingStatus + httpMethod: put + tag: candidates + typeScriptTag: candidates + description: Set Onboarding Status for a candidate + parameters: + - name: onboardingStatus + schema: string + required: true + description: '' + example: ONBOARDINGSTATUS + responses: + - statusCode: '204' + description: Onboarding status successfully updated. + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /candidates/{id}/jobs/{jobId}/onboardingStatus + method: getOnboardingStatus + httpMethod: get + tag: candidates + typeScriptTag: candidates + description: Get Onboarding Status for a candidate associated with given job + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /candidates/{id}/jobs/{jobId}/onboardingStatus + method: setOnboardingStatus + httpMethod: put + tag: candidates + typeScriptTag: candidates + description: Sets Onboarding Status for a candidate associated with given job + parameters: + - name: onboardingStatus + schema: string + required: true + description: '' + example: ONBOARDINGSTATUS + responses: + - statusCode: '204' + description: Onboarding status successfully updated. + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /candidates + method: searchResults + httpMethod: get + tag: candidates + typeScriptTag: candidates + description: Search candidates + parameters: + - name: q + schema: string + description: >- + keyword search, for more infromation see [SmartRecruiters + HelpCenter](https://help.smartrecruiters.com/Getting_Started/Platform/Searching_candidates_via_Candidate_API) + - name: limit + schema: integer + description: number of elements to return. max value is 100 + default: 10 + - name: pageId + schema: string + description: > + page identifier of elements to return + + + The `pageId` param can be used to fetch multiple page response, in + case + + the number of results is higher than max number of elements to return + (specified in the `limit` parameter). + + The `pageId` should not be present when requesting the first page of + results. + + The pageId of the following page is returned either in the + `nextPageId` property, or is available + + in the HTTP header `Link` value of relation type `next`. + + Example of the `Link` header: + + ``` + + ; + rel="next" + + ``` + - name: jobId + schema: array + description: >- + job filter to display candidates who applied for a job [id]; can be + used repeatedly; + - name: location + schema: array + description: >- + location keyword search which looks up a string in a candidate’s + location data; can be used repeatedly; case insensitive; e.g. Krakow + - name: averageRating + schema: array + description: >- + average rating filter to display candidates with a specific average + rating (https://developers.smartrecruiters.com/reference; can be used + repeatedly; e.g. 4 + - name: status + schema: array + description: >- + candidate’s status filter in a context of a job; can be used + repeatedly + - name: consentStatus + schema: array + description: candidate’s consent status filter; can be used repeatedly + - name: subStatus + schema: string + description: >- + candidate’s sub-status filter in a context of a job. Works only in a + correlation with a set value for the "status" field. + - name: tag + schema: array + description: >- + tag assigned to a candidate; can be used repeatedly; case insensitive; + e.g. fluent english + - name: updatedAfter + schema: string + description: >- + ISO8601-formatted time boundaries for the candidate update time, + Format: yyyy-MM-ddTHH:mm:ss.SSSZZ + - name: onboardingStatus + schema: string + description: candidate's onboarding status + - name: propertyId + schema: array + description: >- + candidate's property id + (https://developers.smartrecruiters.com/reference. Currently it is + only possible to filter by single-select application fields. Other + application field type filtering is not possible. + default: [] + - name: propertyValueId + schema: array + description: >- + candidate's property value id + (https://developers.smartrecruiters.com/reference + default: [] + - name: sourceType + schema: array + description: >- + candidate's source type + (https://developers.smartrecruiters.com/reference + default: [] + - name: sourceSubType + schema: array + description: >- + candidate's source subtype + (https://developers.smartrecruiters.com/reference + default: [] + - name: sourceValueId + schema: array + description: >- + candidate's source value id + (https://developers.smartrecruiters.com/reference + default: [] + - name: questionCategory + schema: array + description: >- + screening question category + (https://developers.smartrecruiters.com/reference + default: [] + - name: questionFieldId + schema: array + description: >- + screening question field id + (https://developers.smartrecruiters.com/reference + default: [] + - name: questionFieldValueId + schema: array + description: >- + screening question field value id + (https://developers.smartrecruiters.com/reference + default: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - url: /candidates + method: createWithSourceDetails + httpMethod: post + tag: candidates + typeScriptTag: candidates + description: Create a new candidate and assign to a Talent Pool + parameters: + - name: tags + schema: array + required: false + description: '' + - name: firstName + schema: string + required: true + description: '' + example: FIRSTNAME + - name: lastName + schema: string + required: true + description: '' + example: LASTNAME + - name: email + schema: string + required: true + description: '' + example: EMAIL + - name: phoneNumber + schema: string + required: false + description: '' + - name: location + schema: object + required: false + description: '' + - name: web + schema: object + required: false + description: '' + - name: education + schema: array + required: false + description: '' + default: &ref_0 [] + - name: experience + schema: array + required: false + description: '' + default: &ref_1 [] + - name: sourceDetails + schema: object + required: false + description: '' + - name: internal + schema: boolean + required: false + description: '' + responses: + - statusCode: '201' + description: '' + - statusCode: '400' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /candidates/cv + method: parseResumeAndAssignToTalentPool + httpMethod: post + tag: candidates + typeScriptTag: candidates + description: Parse a resume, create a candidate and assign to a Talent Pool. + parameters: + - name: sourceTypeId + schema: string + description: '' + - name: sourceSubTypeId + schema: string + description: '' + - name: sourceId + schema: string + description: '' + - name: internal + schema: boolean + description: '' + - name: file + schema: string + description: '' + responses: + - statusCode: '201' + description: '' + - statusCode: '400' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /candidates/consent-requests + method: requestConsentFromMultiple + httpMethod: post + tag: candidates + typeScriptTag: candidates + description: Request consent from multiple candidates + parameters: + - name: content + schema: array + required: true + description: '' + responses: + - statusCode: '201' + description: '' + - url: /candidates/{id}/consent + method: getStatusOfConsent + httpMethod: get + tag: candidates + typeScriptTag: candidates + description: Status of candidate consent + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '403' + description: '' + - url: /candidates/{id}/consents + method: getConsentDecisions + httpMethod: get + tag: candidates + typeScriptTag: candidates + description: Candidate consent decisions + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '403' + description: '' + - url: /candidates/{id} + method: removeCandidateById + httpMethod: delete + tag: candidates + typeScriptTag: candidates + description: Delete Candidate + parameters: [] + responses: + - statusCode: '204' + description: Candidate successfully deleted + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /candidates/{id} + method: getDetails + httpMethod: get + tag: candidates + typeScriptTag: candidates + description: Get details of a candidate + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - url: /candidates/{id} + method: updatePersonalInfo + httpMethod: patch + tag: candidates + typeScriptTag: candidates + description: Update candidate personal information + parameters: + - name: firstName + schema: string + description: '' + - name: lastName + schema: string + description: '' + - name: email + schema: string + description: '' + - name: phoneNumber + schema: string + description: '' + - name: location + schema: object + description: '' + - name: web + schema: object + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /candidates/{id}/attachments + method: listAttachments + httpMethod: get + tag: candidates + typeScriptTag: candidates + description: Get list candidate's attachments. + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - url: /candidates/{id}/attachments + method: attachFiles + httpMethod: post + tag: candidates + typeScriptTag: candidates + description: Attach files to a candidate. + parameters: + - name: attachmentType + schema: string + required: true + description: '' + example: ATTACHMENTTYPE + default: GENERIC_FILE + - name: file + schema: string + required: false + description: '' + responses: + - statusCode: '201' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '422' + description: '' + - url: /candidates/{id}/attachments/{attachmentId} + method: getAttachmentById + httpMethod: get + tag: candidates + typeScriptTag: candidates + description: Get a candidate's attachment. + parameters: + - name: attachmentId + schema: string + required: true + description: Identifier of an attachment + example: ATTACHMENTID + responses: + - statusCode: '200' + description: Attachment content + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /candidates/{id}/jobs/{jobId}/attachments + method: getAttachmentsByJobId + httpMethod: get + tag: candidates + typeScriptTag: candidates + description: Get list of candidate's attachments in context of given job. + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /candidates/{id}/jobs/{jobId}/attachments + method: attachFileToJobCandidate + httpMethod: post + tag: candidates + typeScriptTag: candidates + description: Attach file to candidate in context of given job. + parameters: + - name: attachmentType + schema: string + required: true + description: '' + example: ATTACHMENTTYPE + default: GENERIC_FILE + - name: file + schema: string + required: false + description: '' + responses: + - statusCode: '201' + description: '' + - statusCode: '400' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - statusCode: '422' + description: '' + - url: /candidates/attachments/{attachmentId} + method: deleteAttachment + httpMethod: delete + tag: candidates + typeScriptTag: candidates + description: Delete attachment. + parameters: [] + responses: + - statusCode: '204' + description: Attachment successfully deleted + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /candidates/attachments/{attachmentId} + method: getAttachment + httpMethod: get + tag: candidates + typeScriptTag: candidates + description: Get candidate's attachment. + parameters: [] + responses: + - statusCode: '200' + description: Candidate's Attachment + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /candidates/{id}/jobs/{jobId}/status + method: updateStatus + httpMethod: put + tag: candidates + typeScriptTag: candidates + description: Update a candidate's status + parameters: + - name: status + schema: string + required: true + description: '' + example: STATUS + - name: subStatus + schema: string + required: false + description: '' + - name: startsOn + schema: string + required: false + description: '' + - name: reason + schema: string + required: false + description: '' + responses: + - statusCode: '204' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /candidates/{id}/status + method: updateStatusOnPrimaryAssignment + httpMethod: put + tag: candidates + typeScriptTag: candidates + description: Update a candidate's status on primary assignment + parameters: + - name: status + schema: string + required: true + description: '' + example: STATUS + - name: subStatus + schema: string + required: false + description: '' + - name: startsOn + schema: string + required: false + description: '' + - name: reason + schema: string + required: false + description: '' + responses: + - statusCode: '204' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - url: /candidates/{id}/status/history + method: getStatusHistory + httpMethod: get + tag: candidates + typeScriptTag: candidates + description: Get candidate's status history + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - url: /candidates/{id}/jobs/{jobId}/status/history + method: getStatusHistory + httpMethod: get + tag: candidates + typeScriptTag: candidates + description: Get candidate's status history for a candidate's job + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /candidates/{id}/jobs/{jobId}/source + method: updateSource + httpMethod: put + tag: candidates + typeScriptTag: candidates + description: Update a candidate's source + parameters: + - name: sourceTypeId + schema: string + required: true + description: '' + example: SOURCETYPEID + - name: sourceSubTypeId + schema: string + required: false + description: '' + - name: sourceId + schema: string + required: true + description: '' + example: SOURCEID + responses: + - statusCode: '204' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /candidates/{id}/properties + method: getPropertyValues + httpMethod: get + tag: candidates + typeScriptTag: candidates + description: Get candidate property values for a candidate + parameters: + - name: context + schema: string + description: context for candidate properties to display + responses: + - statusCode: '200' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /candidates/{id}/jobs/{jobId}/properties + method: getPropertyValuesForJob + httpMethod: get + tag: candidates + typeScriptTag: candidates + description: Get candidate property values for a candidate's job + parameters: + - name: context + schema: string + description: context for candidate properties to display + responses: + - statusCode: '200' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /candidates/{id}/jobs/{jobId}/properties + method: updateCandidateProperties + httpMethod: put + tag: candidates + typeScriptTag: candidates + description: Add/update candidate properties values + parameters: [] + responses: + - statusCode: '204' + description: Properties successfully updated. + - statusCode: '400' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /candidates/{id}/properties/{propertyId} + method: updatePropertyValue + httpMethod: put + tag: candidates + typeScriptTag: candidates + description: Add/update candidate property value + parameters: + - name: propertyId + schema: string + required: true + description: Identifier of a Candidate Property + example: PROPERTYID + - name: value + schema: undefined + description: '' + responses: + - statusCode: '204' + description: Property successfully updated. + - statusCode: '400' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /candidates/{id}/jobs/{jobId}/properties/{propertyId} + method: updatePropertyValue + httpMethod: put + tag: candidates + typeScriptTag: candidates + description: Add/update candidate property value + parameters: + - name: propertyId + schema: string + required: true + description: Identifier of a Candidate Property + example: PROPERTYID + - name: value + schema: undefined + description: '' + responses: + - statusCode: '204' + description: Property successfully updated. + - statusCode: '400' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /candidates/{id}/jobs/{jobId}/screening-answers + method: getScreeningAnswersByJob + httpMethod: get + tag: candidates + typeScriptTag: candidates + description: Get candidate screening answers for a candidate's job + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /jobs/{jobId}/candidates + method: createWithSource + httpMethod: post + tag: candidates + typeScriptTag: candidates + description: Create a new candidate and assign to a job + parameters: + - name: tags + schema: array + required: false + description: '' + - name: firstName + schema: string + required: true + description: '' + example: FIRSTNAME + - name: lastName + schema: string + required: true + description: '' + example: LASTNAME + - name: email + schema: string + required: true + description: '' + example: EMAIL + - name: phoneNumber + schema: string + required: false + description: '' + - name: location + schema: object + required: false + description: '' + - name: web + schema: object + required: false + description: '' + - name: education + schema: array + required: false + description: '' + default: *ref_0 + - name: experience + schema: array + required: false + description: '' + default: *ref_1 + - name: sourceDetails + schema: object + required: false + description: '' + - name: internal + schema: boolean + required: false + description: '' + responses: + - statusCode: '201' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /jobs/{jobId}/candidates/cv + method: parseResumeAndAssignToJob + httpMethod: post + tag: candidates + typeScriptTag: candidates + description: Parse a resume, create a candidate and assign to a job. + parameters: + - name: sourceTypeId + schema: string + description: '' + - name: sourceSubTypeId + schema: string + description: '' + - name: sourceId + schema: string + description: '' + - name: internal + schema: boolean + description: '' + - name: file + schema: string + description: '' + responses: + - statusCode: '201' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /candidates/{id}/jobs/{jobId} + method: getApplicationDetails + httpMethod: get + tag: candidates + typeScriptTag: candidates + description: Get details of a candidate's application to a job + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /configuration/company + method: getCompanyInformation + httpMethod: get + tag: configuration + typeScriptTag: configuration + description: Get company information + parameters: [] + responses: + - statusCode: '200' + description: '' + - url: /configuration/job-properties + method: getAvailableProperties + httpMethod: get + tag: configuration + typeScriptTag: configuration + description: Get a list of available job properties + parameters: + - name: acceptLanguage + schema: string + required: false + description: language of returned content + default: en + responses: + - statusCode: '200' + description: '' + - statusCode: '403' + description: '' + - url: /configuration/job-properties + method: createJobProperty + httpMethod: post + tag: configuration + typeScriptTag: configuration + description: Create a job property + parameters: + - name: label + schema: string + required: true + description: '' + example: LABEL + - name: category + schema: string + required: true + description: '' + example: CATEGORY + - name: active + schema: boolean + required: false + description: '' + - name: visible + schema: boolean + required: true + description: '' + example: true + - name: required + schema: boolean + required: false + description: '' + responses: + - statusCode: '201' + description: '' + - statusCode: '403' + description: '' + - statusCode: '422' + description: > + With codes: + + * *JOB_PROPERTY_LIMIT_EXCEEDED* when job properties limit is reached, + + * *DEFINITION_NAME_IS_NOT_ALLOWED* when job property name is + restricted. + - url: /configuration/job-properties/{id} + method: getPropertyById + httpMethod: get + tag: configuration + typeScriptTag: configuration + description: Get job property by id + parameters: + - name: acceptLanguage + schema: string + required: false + description: language of returned content + default: en + responses: + - statusCode: '200' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /configuration/job-properties/{id} + method: updateJobProperty + httpMethod: patch + tag: configuration + typeScriptTag: configuration + description: Update a job property + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - statusCode: '422' + description: > + With code: + + * *DEFINITION_NAME_IS_NOT_ALLOWED* when job property name is + restricted. + - url: /configuration/job-properties/{id}/translations + method: addJobPropertyTranslations + httpMethod: patch + tag: configuration + typeScriptTag: configuration + description: Add a job property's translations + parameters: [] + responses: + - statusCode: '204' + description: Translations accepted + - statusCode: '400' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - statusCode: '409' + description: '' + - statusCode: '422' + description: 'Invalid input: missing required data, invalid format' + - url: /configuration/job-properties/{id}/values + method: getJobPropertyValues + httpMethod: get + tag: configuration + typeScriptTag: configuration + description: Get available job property values + parameters: + - name: acceptLanguage + schema: string + required: false + description: language of returned content + default: en + - name: pageId + schema: string + required: false + description: identifier of the next page of subscriptions + - name: pageSize + schema: integer + required: false + description: pageSize + responses: + - statusCode: '200' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /configuration/job-properties/{id}/values + method: createJobPropertyValue + httpMethod: post + tag: configuration + typeScriptTag: configuration + description: Create a job property value + parameters: + - name: id + schema: string + required: false + description: '' + - name: label + schema: string + required: true + description: '' + example: LABEL + - name: archived + schema: boolean + required: false + description: '' + responses: + - statusCode: '201' + description: '' + - statusCode: '400' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - statusCode: '409' + description: '' + - statusCode: '422' + description: '' + - url: /configuration/job-properties/{id}/values/{valueId} + method: archiveJobPropertyValue + httpMethod: delete + tag: configuration + typeScriptTag: configuration + description: Archive a job property value + parameters: [] + responses: + - statusCode: '204' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /configuration/job-properties/{id}/values/{valueId} + method: updateJobPropertyValue + httpMethod: patch + tag: configuration + typeScriptTag: configuration + description: Update a job property value + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - statusCode: '409' + description: '' + - statusCode: '422' + description: > + with input validation fails or with codes: + + * *ACTIVE_VALUES_LIMIT_REACHED* when limit of active job property + values is reached. + + * *JSON_PATCH_INVALID* when patch json is invalid. + + * *VALUE_LABEL_IS_BLANK* when provided label is blank + + * *VALUE_LABEL_IS_INVALID* when provided label is not valid, e.g. + contains leading/trailing whitespaces + - url: /configuration/job-properties/{id}/values/{valueId} + method: unarchiveJobPropertyValue + httpMethod: put + tag: configuration + typeScriptTag: configuration + description: Unarchive a job property value + parameters: [] + responses: + - statusCode: '204' + description: '' + - statusCode: '404' + description: '' + - statusCode: '422' + description: '' + - url: /configuration/job-properties/{id}/values/{valueId}/translations + method: addJobPropertyValueTranslations + httpMethod: patch + tag: configuration + typeScriptTag: configuration + description: Add a job property value's translations + parameters: [] + responses: + - statusCode: '204' + description: Translations accepted + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - statusCode: '409' + description: '' + - statusCode: '422' + description: 'Invalid input: missing required data, invalid format' + - url: /configuration/job-properties/{id}/archive-values/{valueId} + method: unarchiveJobPropertyValue + httpMethod: delete + tag: configuration + typeScriptTag: configuration + description: Unarchive a job property value + parameters: [] + responses: + - statusCode: '204' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - statusCode: '422' + description: '' + - url: /configuration/job-properties/{id}/archive-values/{valueId} + method: archiveJobPropertyValue + httpMethod: put + tag: configuration + typeScriptTag: configuration + description: Archive a job property value + parameters: [] + responses: + - statusCode: '204' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /configuration/job-properties/{id}/activation + method: deactivateJobProperty + httpMethod: delete + tag: configuration + typeScriptTag: configuration + description: Deactivate a job property + parameters: [] + responses: + - statusCode: '204' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /configuration/job-properties/{id}/activation + method: activateJobProperty + httpMethod: put + tag: configuration + typeScriptTag: configuration + description: Activate a job property + parameters: [] + responses: + - statusCode: '204' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - statusCode: '409' + description: '' + - url: /configuration/job-properties/{id}/dependents + method: getJobPropertyDependents + httpMethod: get + tag: configuration + typeScriptTag: configuration + description: Get job property's dependents + parameters: + - name: acceptLanguage + schema: string + required: false + description: language of returned content + default: en + responses: + - statusCode: '200' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /configuration/job-properties/{id}/dependents + method: createJobPropertyDependents + httpMethod: post + tag: configuration + typeScriptTag: configuration + description: Create job property dependents + parameters: + - name: ids + schema: array + required: true + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - statusCode: '422' + description: when input validation fails + - url: /configuration/job-properties/{id}/dependents/{dependentId} + method: removeDependent + httpMethod: delete + tag: configuration + typeScriptTag: configuration + description: Remove job property's dependent + parameters: [] + responses: + - statusCode: '204' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /configuration/job-properties/{id}/dependents/{dependentId}/values + method: getDependentPropertyValues + httpMethod: get + tag: configuration + typeScriptTag: configuration + description: Get dependent job property's values + parameters: + - name: acceptLanguage + schema: string + required: false + description: language of returned content + default: en + responses: + - statusCode: '200' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: >- + /configuration/job-properties/{id}/values/{valueId}/dependents/{dependentId}/values + method: getDependentValues + httpMethod: get + tag: configuration + typeScriptTag: configuration + description: Get job property's dependent values + parameters: + - name: acceptLanguage + schema: string + required: false + description: language of returned content + default: en + - name: pageId + schema: string + required: false + description: identifier of the next page of subscriptions + - name: pageSize + schema: integer + required: false + description: pageSize + responses: + - statusCode: '200' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: >- + /configuration/job-properties/{id}/values/{valueId}/dependents/{dependentId}/values + method: addDependentValue + httpMethod: post + tag: configuration + typeScriptTag: configuration + description: Add job property's dependent value + parameters: + - name: id + schema: string + required: true + description: '' + example: ID + responses: + - statusCode: '204' + description: '' + - statusCode: '400' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - statusCode: '409' + description: '' + - statusCode: '422' + description: when input validation fails + - url: >- + /configuration/job-properties/{id}/values/{valueId}/dependents/{dependentId}/values/{dependentValueId} + method: removeDependentValuesRelationship + httpMethod: delete + tag: configuration + typeScriptTag: configuration + description: Remove job property's dependent values relationship + parameters: [] + responses: + - statusCode: '204' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /configuration/departments + method: getDepartments + httpMethod: get + tag: configuration + typeScriptTag: configuration + description: Get departments + parameters: + - name: acceptLanguage + schema: string + required: false + description: language of returned content + default: en + responses: + - statusCode: '200' + description: '' + - url: /configuration/departments + method: createDepartment + httpMethod: post + tag: configuration + typeScriptTag: configuration + description: Creates department + parameters: + - name: description + schema: string + required: false + description: '' + - name: id + schema: string + required: false + description: '' + - name: label + schema: string + required: true + description: '' + example: LABEL + responses: + - statusCode: '201' + description: '' + - statusCode: '400' + description: '' + - url: /configuration/departments/{id} + method: getDepartmentById + httpMethod: get + tag: configuration + typeScriptTag: configuration + description: Get department + parameters: + - name: id + schema: string + required: true + description: Identifier of a department + example: ID + responses: + - statusCode: '200' + description: '' + - statusCode: '404' + description: '' + - url: /configuration/hiring-processes + method: getHiringProcesses + httpMethod: get + tag: configuration + typeScriptTag: configuration + description: Get list of hiring process + parameters: [] + responses: + - statusCode: '200' + description: '' + - url: /configuration/hiring-processes/{id} + method: getHiringProcess + httpMethod: get + tag: configuration + typeScriptTag: configuration + description: Get hiring process + parameters: + - name: id + schema: string + required: true + description: Identifier of a hiring process + example: ID + responses: + - statusCode: '200' + description: '' + - statusCode: '404' + description: '' + - url: /configuration/offer-properties + method: listOfferProperties + httpMethod: get + tag: configuration + typeScriptTag: configuration + description: Get a list of available offer properties + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '403' + description: '' + - url: /configuration/candidate-properties + method: getCandidateProperties + httpMethod: get + tag: configuration + typeScriptTag: configuration + description: Get a list of available candidate properties + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '403' + description: '' + - url: /configuration/candidate-properties/{id} + method: getCandidatePropertyById + httpMethod: get + tag: configuration + typeScriptTag: configuration + description: Get candidate property by id + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '404' + description: '' + - url: /configuration/candidate-properties/{id}/values + method: getCandidatePropertyValues + httpMethod: get + tag: configuration + typeScriptTag: configuration + description: Get Candidate Property values + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /configuration/candidate-properties/{id}/values + method: createCandidatePropertyValue + httpMethod: post + tag: configuration + typeScriptTag: configuration + description: Create candidate property value + parameters: + - name: id + schema: string + required: true + description: '' + example: ID + - name: value + schema: undefined + required: false + description: '' + responses: + - statusCode: '201' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - statusCode: '409' + description: '' + - url: /configuration/candidate-properties/{id}/values/{valueId} + method: removeValue + httpMethod: delete + tag: configuration + typeScriptTag: configuration + description: Remove candidate property value + parameters: [] + responses: + - statusCode: '204' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /configuration/candidate-properties/{id}/values/{valueId} + method: getCandidatePropertyValueById + httpMethod: get + tag: configuration + typeScriptTag: configuration + description: Get Candidate Property value by id + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /configuration/candidate-properties/{id}/values/{valueId} + method: updatePropertyValueLabel + httpMethod: put + tag: configuration + typeScriptTag: configuration + description: Update candidate property value label + parameters: + - name: label + schema: string + required: true + description: '' + example: LABEL + responses: + - statusCode: '201' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - statusCode: '409' + description: '' + - url: /configuration/sources + method: listCandidateSourceTypesWithSubtypes + httpMethod: get + tag: configuration + typeScriptTag: configuration + description: List candidate source types with subtypes + parameters: [] + responses: + - statusCode: '200' + description: '' + - url: /configuration/sources/{sourceType}/values + method: listCandidateSourcesByType + httpMethod: get + tag: configuration + typeScriptTag: configuration + description: List candidate sources + parameters: + - name: sourceSubType + schema: string + required: false + description: Source SubType from /configuration/sources + - name: limit + schema: integer + required: false + description: number of elements to return. max value is 100 + default: 100 + - name: offset + schema: integer + required: false + description: number of elements to skip while processing result + default: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /configuration/sources/{sourceType}/values/{sourceValueId} + method: getCandidateSource + httpMethod: get + tag: configuration + typeScriptTag: configuration + description: Get a candidate source + parameters: + - name: sourceSubType + schema: string + required: false + description: Source SubType from /configuration/sources + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /configuration/sources/{sourceIdentifier} + method: getCandidateSourceById + httpMethod: get + tag: configuration + typeScriptTag: configuration + description: Get a candidate source by identifier. + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /configuration/rejection-reasons + method: getRejectionReasons + httpMethod: get + tag: configuration + typeScriptTag: configuration + description: Get rejection reasons + parameters: [] + responses: + - statusCode: '200' + description: '' + - url: /configuration/withdrawal-reasons + method: getWithdrawalReasons + httpMethod: get + tag: configuration + typeScriptTag: configuration + description: Get withdrawal reasons + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '403' + description: '' + - url: /publications/{postingId} + method: getPostingById + httpMethod: get + tag: feed + typeScriptTag: feed + description: Get posting by id + parameters: + - name: postingId + schema: integer + required: true + description: Posting id to find + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: Unauthorized + - statusCode: '404' + description: Not found + - url: /publications/{postingId} + method: updatePostingInfo + httpMethod: put + tag: feed + typeScriptTag: feed + description: Update posting information + parameters: + - name: postingId + schema: integer + required: true + description: >- + A single posting id. Allows updating information only for the defined + postings. + example: 0 + - name: liveUrl + schema: string + description: '' + - name: status + schema: string + description: '' + - name: comment + schema: string + description: '' + responses: + - statusCode: '204' + description: Posting successfully updated + - statusCode: '400' + description: Payload not valid + - statusCode: '401' + description: Wrong token + - statusCode: '404' + description: PostingId not found + - url: /publications + method: listPostings + httpMethod: get + tag: feed + typeScriptTag: feed + description: Get a list of postings + parameters: + - name: updatedAfter + schema: string + description: >- + List postings created after the specified date.

Date + should be in ISO 8601 format: (e.g.: + '2015-07-27T08:43:33.000Z').

If no value is provided, only + postings created in the last 30 days will be returned. + - name: status + schema: array + description: >- + List of posting statuses separated by comma.

Status + definition:

Example: status=Active,Error + - name: offset + schema: string + description: >- + Number of elements to skip while processing result.
Allowed range: + [0, 2^31-1]. + default: '0' + - name: limit + schema: string + description: 'Maximum number of postings returned.
Allowed range: [0, 100].' + default: '100' + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: Unauthorized + - statusCode: '404' + description: Not found + - url: /interview-types + method: getTypes + httpMethod: get + tag: interview types + typeScriptTag: interviewTypes + description: Retrieves interview types + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '500' + description: '' + - url: /interview-types + method: addExistingTypes + httpMethod: patch + tag: interview types + typeScriptTag: interviewTypes + description: Adds interview types to already existing ones + parameters: [] + responses: + - statusCode: '204' + description: Interview types updated + - statusCode: '403' + description: '' + - statusCode: '409' + description: '' + - statusCode: '422' + description: When input validation fails + - statusCode: '500' + description: '' + - url: /interview-types/{interviewType} + method: removeByType + httpMethod: delete + tag: interview types + typeScriptTag: interviewTypes + description: Removes interview type with given name + parameters: [] + responses: + - statusCode: '204' + description: Interview type deleted + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - url: /interviews + method: getList + httpMethod: get + tag: interviews + typeScriptTag: interviews + description: Retrieves a list of interviews + parameters: + - name: applicationId + schema: string + required: true + description: ID of the application + example: APPLICATIONID + responses: + - statusCode: '200' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - url: /interviews + method: createNewInterview + httpMethod: post + tag: interviews + typeScriptTag: interviews + description: Creates an interview + parameters: + - name: id + schema: string + required: false + description: '' + - name: candidate + schema: object + required: true + description: '' + - name: jobId + schema: string + required: true + description: '' + example: JOBID + - name: location + schema: string + required: false + description: '' + - name: organizerId + schema: string + required: true + description: '' + example: ORGANIZERID + - name: timezone + schema: string + required: true + description: '' + example: TIMEZONE + - name: timeslots + schema: array + required: true + description: '' + - name: createdOn + schema: string + required: false + description: '' + - name: refUrl + schema: string + required: false + description: '' + - name: source + schema: string + required: false + description: '' + responses: + - statusCode: '201' + description: '' + - statusCode: '400' + description: '' + - statusCode: '403' + description: '' + - statusCode: '422' + description: '' + - statusCode: '500' + description: '' + - url: /interviews/{interviewId} + method: deleteById + httpMethod: delete + tag: interviews + typeScriptTag: interviews + description: Deletes an interview + parameters: [] + responses: + - statusCode: '204' + description: Interview was deleted + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - url: /interviews/{interviewId} + method: getDetails + httpMethod: get + tag: interviews + typeScriptTag: interviews + description: Retrieves an interview + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - url: /interviews/{interviewId} + method: modifyInterview + httpMethod: patch + tag: interviews + typeScriptTag: interviews + description: Modifies an interview + parameters: + - name: location + schema: string + description: '' + - name: timezone + schema: string + description: '' + - name: candidate + schema: object + description: '' + responses: + - statusCode: '204' + description: Interview updated + - statusCode: '400' + description: | + with codes: + * **INVALID_TIMEZONE** when invalid timezone + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - statusCode: '422' + description: When input validation fails + - statusCode: '500' + description: '' + - url: /interviews/{interviewId}/timeslots + method: createNewTimeslot + httpMethod: post + tag: timeslots + typeScriptTag: timeslots + description: Creates a timeslot + parameters: + - name: interviewId + schema: string + required: true + description: ID of the interview + example: INTERVIEWID + - name: title + schema: string + required: false + description: '' + - name: id + schema: string + required: false + description: '' + - name: interviewType + schema: string + required: false + description: '' + - name: place + schema: string + required: false + description: '' + - name: startsOn + schema: string + required: true + description: '' + example: STARTSON + - name: endsOn + schema: string + required: true + description: '' + example: ENDSON + - name: interviewers + schema: array + required: true + description: '' + - name: candidateStatus + schema: string + required: false + description: '' + responses: + - statusCode: '201' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - statusCode: '409' + description: '' + - statusCode: '422' + description: > + When input validation fails or with codes: + + * **INACTIVE_OR_DELETED_INTERVIEWERS** when at least one of the + interviewers is inactive or deleted + + * **END_DATE_BEFORE_START_DATE** when end date of the timeslot is + before start date + + * **NON_EXISTING_INTERVIEWERS** when at least one of the interviewers + does not exist + - statusCode: '500' + description: '' + - url: /interviews/{interviewId}/timeslots/{timeslotId} + method: deleteTimeslot + httpMethod: delete + tag: timeslots + typeScriptTag: timeslots + description: Deletes a timeslot + parameters: [] + responses: + - statusCode: '204' + description: Timeslot deleted + - statusCode: '403' + description: '' + - statusCode: '404' + description: | + with codes: + * **INTERVIEW_NOT_FOUND** when no interview with given id + * **TIMESLOT_NOT_FOUND** when no timeslot with given id + - statusCode: '409' + description: | + with codes: + * **CANNOT_DELETE_LAST_TIMESLOT** when cannot delete last timeslot + - statusCode: '500' + description: '' + - url: /interviews/{interviewId}/timeslots/{timeslotId} + method: getById + httpMethod: get + tag: timeslots + typeScriptTag: timeslots + description: Retrieves a timeslot + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: | + with codes: + * **INTERVIEW_NOT_FOUND** when no interview with given id + * **TIMESLOT_NOT_FOUND** when no timeslot with given id + - statusCode: '500' + description: '' + - url: /interviews/{interviewId}/timeslots/{timeslotId} + method: modifyTimeSlot + httpMethod: patch + tag: timeslots + typeScriptTag: timeslots + description: Modifies a timeslot + parameters: + - name: title + schema: string + required: false + description: '' + - name: id + schema: string + required: false + description: '' + - name: interviewType + schema: string + required: false + description: '' + - name: place + schema: string + required: false + description: '' + - name: startsOn + schema: string + required: true + description: '' + example: STARTSON + - name: endsOn + schema: string + required: true + description: '' + example: ENDSON + - name: interviewers + schema: array + required: true + description: '' + - name: candidateStatus + schema: string + required: false + description: '' + responses: + - statusCode: '204' + description: Timeslot updated + - statusCode: '400' + description: Missing data in timeslot object + - statusCode: '403' + description: '' + - statusCode: '404' + description: | + with codes: + * **INTERVIEW_NOT_FOUND** when no interview with given id + * **TIMESLOT_NOT_FOUND** when no timeslot with given id + - statusCode: '422' + description: > + When input validation fails or with codes: + + * **INACTIVE_OR_DELETED_INTERVIEWERS** when at least one of the + interviewers is inactive or deleted + + * **END_DATE_BEFORE_START_DATE** when end date of the timeslot is + before start date + + * **NON_EXISTING_INTERVIEWERS** when at least one of the interviewers + does not exist + - statusCode: '500' + description: '' + - url: /interviews/{interviewId}/candidate/status + method: updateCandidateStatus + httpMethod: put + tag: statuses + typeScriptTag: statuses + description: Changes a candidate's status. + parameters: + - name: status + schema: string + required: true + description: '' + example: STATUS + responses: + - statusCode: '204' + description: Status successfully changed + - statusCode: '403' + description: '' + - statusCode: '404' + description: | + with codes: + * **INTERVIEW_NOT_FOUND** when no interview with given id + - statusCode: '422' + description: When input validation fails + - statusCode: '500' + description: '' + - url: >- + /interviews/{interviewId}/timeslots/{timeslotId}/interviewers/{userId}/status + method: updateInterviewerStatusInSlot + httpMethod: put + tag: statuses + typeScriptTag: statuses + description: Changes a interviewer's status in given timeslot + parameters: + - name: status + schema: string + required: true + description: '' + example: STATUS + responses: + - statusCode: '204' + description: Status successfully changed + - statusCode: '403' + description: '' + - statusCode: '404' + description: > + with codes: + + * **INTERVIEW_NOT_FOUND** when no interview with given id * + **TIMESLOT_NOT_FOUND** when no timeslot with given id * + **NON_EXISTING_INTERVIEWERS** when no interviewer with given id exists + in timeslot + - statusCode: '422' + description: When input validation fails + - statusCode: '500' + description: '' + - url: /interviews/{interviewId}/timeslots/{timeslotId}/candidateStatus + method: updateCandidateTimeslotStatus + httpMethod: put + tag: statuses + typeScriptTag: statuses + description: Changes a candidate's status in given timeslot + parameters: + - name: status + schema: string + required: true + description: '' + example: STATUS + responses: + - statusCode: '204' + description: Candidate status in a timeslot is successfully changed + - statusCode: '403' + description: '' + - statusCode: '404' + description: > + with codes: + + * **INTERVIEW_NOT_FOUND** when no interview with given id * + **TIMESLOT_NOT_FOUND** when no timeslot with given id + - statusCode: '422' + description: When input validation fails + - statusCode: '500' + description: '' + - url: /jobs/{jobId}/positions + method: getPositionsForJob + httpMethod: get + tag: jobs + typeScriptTag: jobs + description: Positions for a job + parameters: + - name: acceptLanguage + schema: string + required: false + description: language of returned content + default: en + responses: + - statusCode: '200' + description: '' + - statusCode: '403' + description: '' + - url: /jobs/{jobId}/positions + method: createNewPosition + httpMethod: post + tag: jobs + typeScriptTag: jobs + description: Create a new position for a job + parameters: + - name: positionId + schema: string + required: false + description: '' + - name: incumbentName + schema: string + required: false + description: '' + - name: type + schema: string + required: true + description: '' + example: TYPE + - name: positionOpenDate + schema: string + required: true + description: '' + example: POSITIONOPENDATE + - name: targetStartDate + schema: string + required: true + description: '' + example: TARGETSTARTDATE + responses: + - statusCode: '201' + description: '' + - statusCode: '403' + description: '' + - url: /jobs/{jobId}/positions/{positionId} + method: deletePosition + httpMethod: delete + tag: jobs + typeScriptTag: jobs + description: Delete position + parameters: [] + responses: + - statusCode: '204' + description: Position successfully removed + - statusCode: '400' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /jobs/{jobId}/positions/{positionId} + method: getSinglePosition + httpMethod: get + tag: jobs + typeScriptTag: jobs + description: Get a single position + parameters: + - name: acceptLanguage + schema: string + required: false + description: language of returned content + default: en + responses: + - statusCode: '200' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /jobs/{jobId}/positions/{positionId} + method: updatePosition + httpMethod: put + tag: jobs + typeScriptTag: jobs + description: Update position + parameters: + - name: positionId + schema: string + required: false + description: '' + - name: incumbentName + schema: string + required: false + description: '' + - name: type + schema: string + required: true + description: '' + example: TYPE + - name: positionOpenDate + schema: string + required: true + description: '' + example: POSITIONOPENDATE + - name: targetStartDate + schema: string + required: true + description: '' + example: TARGETSTARTDATE + responses: + - statusCode: '201' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /jobs/{jobId}/jobads + method: findJobAdsForJob + httpMethod: get + tag: jobs + typeScriptTag: jobs + description: Find and list job ads for a given job + parameters: + - name: acceptLanguage + schema: string + required: false + description: language of returned content + default: en + responses: + - statusCode: '200' + description: '' + - statusCode: '404' + description: '' + - url: /jobs/{jobId}/jobads + method: createJobAd + httpMethod: post + tag: jobs + typeScriptTag: jobs + description: Create a new job ad + parameters: + - name: title + schema: string + required: true + description: '' + example: TITLE + - name: language + schema: object + required: false + description: '' + - name: jobAd + schema: object + required: false + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: > + with codes + + * **JOB_AD_LIMIT_REACHED** when job add limit (100 per job) is reached + + * **PROPERTY_INVALID** when one of job ad attribute contains invalid + characters + - statusCode: '404' + description: '' + - url: /jobs/{jobId}/jobads/{jobAdId} + method: getJobAd + httpMethod: get + tag: jobs + typeScriptTag: jobs + description: Get a job ad + parameters: + - name: acceptLanguage + schema: string + required: false + description: language of returned content + default: en + responses: + - statusCode: '200' + description: '' + - statusCode: '404' + description: '' + - url: /jobs/{jobId}/jobads/{jobAdId} + method: updateJobAd + httpMethod: put + tag: jobs + typeScriptTag: jobs + description: Update a job ad + parameters: + - name: title + schema: string + required: true + description: '' + example: TITLE + - name: language + schema: object + required: false + description: '' + - name: jobAd + schema: object + required: false + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: > + with code + + * **PROPERTY_INVALID** when one of job ad attribute contains invalid + characters + - statusCode: '404' + description: '' + - url: /jobs/{jobId}/jobads/{jobAdId}/postings + method: unpublishJobAd + httpMethod: delete + tag: jobs + typeScriptTag: jobs + description: Unpublish a job ad + parameters: [] + responses: + - statusCode: '202' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /jobs/{jobId}/jobads/{jobAdId}/postings + method: listPublicationsForJobAd + httpMethod: get + tag: jobs + typeScriptTag: jobs + description: List publications for a job ad + parameters: + - name: acceptLanguage + schema: string + required: false + description: language of returned content + default: en + - name: activeOnly + schema: boolean + required: false + description: >- + publication status filter; when omitted, defaults to 'true' (only + active publications are returned); 'false' returns active and inactive + publications + default: true + responses: + - statusCode: '200' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /jobs/{jobId}/jobads/{jobAdId}/postings + method: publishJobAdPostings + httpMethod: post + tag: jobs + typeScriptTag: jobs + description: Publishes a job ad + parameters: + - name: aggregators + schema: boolean + description: '' + default: true + - name: visibility + schema: string + description: '' + default: PUBLIC + responses: + - statusCode: '202' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /jobs/{jobId}/publication + method: unpublishJobFromAllSources + httpMethod: delete + tag: jobs + typeScriptTag: jobs + description: Unpublishes a job from all sources + parameters: [] + responses: + - statusCode: '204' + description: '' + - statusCode: '401' + description: '' + - url: /jobs/{jobId}/publication + method: findPublications + httpMethod: get + tag: jobs + typeScriptTag: jobs + description: Find and list publications for a job + parameters: + - name: acceptLanguage + schema: string + required: false + description: language of returned content + default: en + - name: activeOnly + schema: boolean + required: false + description: >- + publication status filter; defaults to 'true' (only active + publications are returned); 'false' returns active and inactive + publications + default: true + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - url: /jobs/{jobId}/publication + method: publishDefaultJobAd + httpMethod: post + tag: jobs + typeScriptTag: jobs + description: Publishes a default job ad + parameters: + - name: aggregators + schema: boolean + description: '' + default: true + - name: visibility + schema: string + description: '' + default: PUBLIC + responses: + - statusCode: '204' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - url: /jobs/{jobId}/hiring-team + method: getHiringTeam + httpMethod: get + tag: jobs + typeScriptTag: jobs + description: Get hiring team of a job with a given id. + parameters: + - name: acceptLanguage + schema: string + required: false + description: language of returned content + default: en + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - url: /jobs/{jobId}/hiring-team + method: addHiringTeamMember + httpMethod: post + tag: jobs + typeScriptTag: jobs + description: Add hiring team member of a job with a given id. + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '409' + description: '' + - url: /jobs/{jobId}/hiring-team/{userId} + method: removeHiringTeamMember + httpMethod: delete + tag: jobs + typeScriptTag: jobs + description: Removes hiring team member of a job with a given id. + parameters: [] + responses: + - statusCode: '204' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /jobs/{jobId}/note + method: getNoteById + httpMethod: get + tag: jobs + typeScriptTag: jobs + description: Get note of a job. + parameters: + - name: acceptLanguage + schema: string + required: false + description: language of returned content + default: en + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /jobs/{jobId}/note + method: updateNote + httpMethod: put + tag: jobs + typeScriptTag: jobs + description: Update note of a job. + parameters: + - name: content + schema: string + required: true + description: '' + example: CONTENT + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - url: /jobs/{jobId}/headcount + method: updateHeadcount + httpMethod: patch + tag: jobs + typeScriptTag: jobs + description: Update job headcount. + parameters: + - name: salaryRange + schema: object + description: '' + responses: + - statusCode: '202' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - url: /jobs + method: searchJobsByParams + httpMethod: get + tag: jobs + typeScriptTag: jobs + description: Search jobs + parameters: + - name: acceptLanguage + schema: string + required: false + description: language of returned content + default: en + - name: q + schema: string + required: false + description: >- + full-text search query based on a job title; case insensitive; e.g. + java developer + - name: limit + schema: integer + required: false + description: number of elements to return. max value is 100 + default: 10 + - name: offset + schema: integer + required: false + description: >- + number of elements to skip while processing result; this method of + paging is very slow and is deprecated, please use `pageId` instead + default: 0 + - name: pageId + schema: string + required: false + description: >- + unique identifier for next page of jobs - returned as `nextPageId` in + previous page result. You must set `job_id` value for `sort` parameter + if you use `pageId`. + - name: sort + schema: string + required: false + description: >- + Order in which results are returned. + + - default - sorts results by creation date or by match score and + creation date if query + (https://developers.smartrecruiters.com/reference is set. Can't be + used with pageId parameter (request might not return all results) + + - job_id - sorts results by job id. The only supported sorting order + when using pageId based pagination. + - name: city + schema: array + required: false + description: >- + city filter (part of the location object); can be used repeatedly; + case sensitive; e.g. San Francisco + - name: department + schema: array + required: false + description: >- + department filter (by department label); can be used repeatedly; case + sensitive; e.g. “Marketing” + - name: updatedAfter + schema: string + required: false + description: >- + ISO8601-formatted time boundaries for the job update time, Format: + yyyy-MM-ddTHH:mm:ss.SSSZZ + - name: lastActivityAfter + schema: string + required: false + description: > + ISO8601-formatted time boundaries for the job lastActivityOn time, + Format: yyyy-MM-ddTHH:mm:ss.SSSZZ. + + lastActivityOn is updated when job is edited, new candidates apply or + job is published. + - name: language + schema: string + required: false + description: > + Exceptions to the language code ISO format: + + * "en-GB" - "English - English + (https://developers.smartrecruiters.com/reference" + + * "es-MX" - "Spanish - español (México)" + + * "fr-CA" - "French - français + (https://developers.smartrecruiters.com/reference" + + * "pt-BR" - "Portugal - português + (https://developers.smartrecruiters.com/reference" + + * "zh-TW" - "Chinese (https://developers.smartrecruiters.com/reference + - 中文 (香港)" + + * "zh-CN" - "Chinese (https://developers.smartrecruiters.com/reference + - 中文 (简体)" + + + + Value "pt-PT" is deprecated and will not work, use "pt" instead. + - name: status + schema: string + required: false + description: | + Status of a job + - name: postingStatus + schema: string + required: false + description: | + Posting status of a job + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - url: /jobs + method: createNewJob + httpMethod: post + tag: jobs + typeScriptTag: jobs + description: Create a new job + parameters: + - name: title + schema: string + required: true + description: '' + example: TITLE + - name: refNumber + schema: string + required: false + description: '' + - name: targetHiringDate + schema: string + required: false + description: '' + - name: department + schema: object + required: false + description: '' + - name: location + schema: object + required: true + description: '' + - name: industry + schema: object + required: true + description: '' + - name: function + schema: object + required: true + description: '' + - name: typeOfEmployment + schema: object + required: false + description: '' + - name: experienceLevel + schema: object + required: true + description: '' + - name: eeoCategory + schema: object + required: false + description: '' + - name: template + schema: boolean + required: false + description: '' + - name: compensation + schema: object + required: false + description: '' + - name: jobAd + schema: object + required: false + description: '' + - name: properties + schema: array + required: false + description: '' + responses: + - statusCode: '201' + description: '' + - statusCode: '400' + description: '' + - statusCode: '403' + description: '' + - statusCode: '409' + description: '' + - statusCode: '422' + description: Input validation fails + - url: /jobs/{jobId} + method: getContentById + httpMethod: get + tag: jobs + typeScriptTag: jobs + description: Get content of a job with a given id. + parameters: + - name: acceptLanguage + schema: string + required: false + description: language of returned content + default: en + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - url: /jobs/{jobId} + method: updateJobAttributes + httpMethod: patch + tag: jobs + typeScriptTag: jobs + description: Update a job + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '422' + description: Input validation fails + - url: /jobs/{jobId} + method: updateJobAndJobAd + httpMethod: put + tag: jobs + typeScriptTag: jobs + description: Updates job + parameters: + - name: title + schema: string + required: true + description: '' + example: TITLE + - name: refNumber + schema: string + required: false + description: '' + - name: targetHiringDate + schema: string + required: false + description: '' + - name: department + schema: object + required: false + description: '' + - name: location + schema: object + required: true + description: '' + - name: industry + schema: object + required: true + description: '' + - name: function + schema: object + required: true + description: '' + - name: typeOfEmployment + schema: object + required: false + description: '' + - name: experienceLevel + schema: object + required: true + description: '' + - name: eeoCategory + schema: object + required: false + description: '' + - name: template + schema: boolean + required: false + description: '' + - name: compensation + schema: object + required: false + description: '' + - name: jobAd + schema: object + required: false + description: '' + - name: properties + schema: array + required: false + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '422' + description: Input validation fails + - url: /jobs/{jobId}/status + method: updateStatus + httpMethod: put + tag: jobs + typeScriptTag: jobs + description: Updates job status + parameters: + - name: status + schema: string + required: true + description: '' + example: STATUS + responses: + - statusCode: '201' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /jobs/{jobId}/status/history + method: getStatusHistory + httpMethod: get + tag: jobs + typeScriptTag: jobs + description: Job status history + parameters: + - name: acceptLanguage + schema: string + required: false + description: language of returned content + default: en + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - url: /jobs/{jobId}/approvals/latest + method: getLatestApprovals + httpMethod: get + tag: jobs + typeScriptTag: jobs + description: Get latest approval request for given job + parameters: + - name: acceptLanguage + schema: string + required: false + description: language of returned content + default: en + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /job-applications/{jobApplicationId} + method: getById + httpMethod: get + tag: job-applications + typeScriptTag: jobApplications + description: Get a job application + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /messages/shares + method: shareNewMessages + httpMethod: post + tag: messages + typeScriptTag: messages + description: >- + Shares new messages on Hireloop with Users, Hiring Teams or Everyone and + sends emails. + parameters: + - name: content + schema: string + required: true + description: '' + example: CONTENT + - name: correlationId + schema: string + required: false + description: '' + - name: shareWith + schema: object + required: false + description: '' + responses: + - statusCode: '201' + description: '' + - statusCode: '400' + description: '' + - url: /messages/shares/{id} + method: deleteById + httpMethod: delete + tag: messages + typeScriptTag: messages + description: Delete a message + parameters: + - name: id + schema: string + required: true + description: identifier of a message + example: ID + responses: + - statusCode: '204' + description: Message successfully deleted + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /messages + method: getByCandidateAndJobId + httpMethod: get + tag: messages + typeScriptTag: messages + description: Fetch messages + parameters: + - name: candidateId + schema: string + required: true + description: identifier of a candidate + example: CANDIDATEID + - name: jobId + schema: string + required: false + description: identifier of a job + - name: pageId + schema: string + required: false + description: identifier of next page + - name: limit + schema: integer + required: false + description: limit + default: 10 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: > + with codes: + + * **CANDIDATE_NOT_FOUND** when candidate with given id does not exist + + * **JOB_NOT_FOUND** when job with given id does not exist + + * **APPLICATION_NOT_FOUND** when candidate does not have application + for given job + - statusCode: '403' + description: '' + - url: /candidates/{id}/jobs/{jobId}/offers + method: getCandidateJobOffers + httpMethod: get + tag: offers + typeScriptTag: offers + description: Get candidate's offers + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /candidates/{id}/jobs/{jobId}/offers/{offerId} + method: getCandidateOffer + httpMethod: get + tag: offers + typeScriptTag: offers + description: Get candidate's offer + parameters: + - name: offerId + schema: string + required: true + description: Identifier of a Offer + example: OFFERID + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /candidates/{id}/jobs/{jobId}/offers/{offerId}/approvals/latest + method: getLatestApprovalRequest + httpMethod: get + tag: offers + typeScriptTag: offers + description: Get latest approval request for candidate's offer + parameters: + - name: offerId + schema: string + required: true + description: Identifier of a Offer + example: OFFERID + responses: + - statusCode: '200' + description: Approval request + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /offers + method: searchByCriteria + httpMethod: get + tag: offers + typeScriptTag: offers + description: Search offers by criteria + parameters: + - name: limit + schema: integer + description: >- + number of offers to return. max number of offers returned by single + call is 100 + - name: offset + schema: integer + description: number of offers to skip while processing result + - name: status + schema: string + description: >- + offer status; available values are: INACTIVE, UNDER_REVIEW, ACTIVE, + REJECTED + - name: q + schema: string + description: >- + full text query. will match offers with name and description matching + query string + - name: postingId + schema: string + description: >- + id of a job posting; allows getting offer information using Posting Id + coming from Job Board API; not relevant for Assessment vendors + responses: + - statusCode: '200' + description: '' + - statusCode: '403' + description: '' + - statusCode: default + description: '' + - url: /offers + method: insertNewOffer + httpMethod: post + tag: offers + typeScriptTag: offers + description: Create offer + parameters: + - name: description + schema: string + required: true + description: '' + example: DESCRIPTION + - name: id + schema: string + required: false + description: '' + - name: createDate + schema: string + required: false + description: '' + - name: lastUpdateDate + schema: string + required: false + description: '' + - name: catalogId + schema: string + required: true + description: '' + example: CATALOGID + - name: name + schema: string + required: true + description: '' + example: NAME + - name: category + schema: string + required: false + description: '' + - name: terms + schema: object + required: true + description: '' + - name: status + schema: string + required: false + description: '' + - name: targetMarket + schema: object + required: false + description: '' + - name: availability + schema: object + required: false + description: '' + responses: + - statusCode: default + description: '' + - url: /offers/{offerId}/documents + method: getRelatedDocuments + httpMethod: get + tag: offers + typeScriptTag: offers + description: Get a list of documents related to sent offer. + parameters: + - name: offerId + schema: string + required: true + description: Identifier of an offer. + example: OFFERID + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - statusCode: '409' + description: '' + - statusCode: '422' + description: '' + - url: /offers/{offerId}/documents/{documentId} + method: getDocument + httpMethod: get + tag: offers + typeScriptTag: offers + description: Get a given document in a given sent offer + parameters: + - name: offerId + schema: string + required: true + description: Identifier of an offer. + example: OFFERID + - name: documentId + schema: string + required: true + description: Identifier of a document. + example: DOCUMENTID + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - statusCode: '409' + description: '' + - statusCode: '422' + description: '' + - url: /assessments/{assessmentOrderId}/comments/{commentId} + method: getById + httpMethod: get + tag: comments + typeScriptTag: comments + description: Get comment by id + parameters: + - name: assessmentOrderId + schema: string + required: true + description: unique id of an assessment order + example: ASSESSMENTORDERID + - name: commentId + schema: string + required: true + description: unique id of an assessment comment + example: COMMENTID + responses: + - statusCode: default + description: '' + - url: /assessments/{assessmentOrderId}/comments + method: listByAssessmentOrderId + httpMethod: get + tag: comments + typeScriptTag: comments + description: List comments + parameters: + - name: assessmentOrderId + schema: string + required: true + description: unique id of an assessment order + example: ASSESSMENTORDERID + - name: limit + schema: string + description: >- + number of comments to return. max number of comments returned by + single call is 100 + - name: offset + schema: string + description: number of comments to skip while processing result + responses: + - statusCode: default + description: '' + - url: /assessments/{assessmentOrderId}/comments + method: addNewCommentToAssessmentOrder + httpMethod: post + tag: comments + typeScriptTag: comments + description: Add new comment + parameters: + - name: assessmentOrderId + schema: string + required: true + description: unique id of an assessment order + example: ASSESSMENTORDERID + - name: message + schema: string + required: true + description: '' + example: MESSAGE + - name: messageToCandidate + schema: string + required: false + description: '' + - name: assessmentURL + schema: string + required: false + description: '' + - name: author + schema: object + required: false + description: '' + responses: + - statusCode: default + description: '' + - url: >- + /assessments/{assessmentOrderId}/results/{resultId}/attachments/{attachmentId} + method: getDetails + httpMethod: get + tag: attachments + typeScriptTag: attachments + description: Get assessment attachment + parameters: + - name: assessmentOrderId + schema: string + required: true + description: unique id of an assessment order + example: ASSESSMENTORDERID + - name: resultId + schema: string + required: true + description: unique result id + example: RESULTID + - name: attachmentId + schema: string + required: true + description: unique id of an attachment + example: ATTACHMENTID + responses: + - statusCode: default + description: '' + - url: >- + /assessments/{assessmentOrderId}/results/{resultId}/attachments/{attachmentId} + method: updateFile + httpMethod: post + tag: attachments + typeScriptTag: attachments + description: Update assessment attachment + parameters: + - name: assessmentOrderId + schema: string + required: true + description: unique id of an assessment order + example: ASSESSMENTORDERID + - name: resultId + schema: string + required: true + description: unique result id + example: RESULTID + - name: attachmentId + schema: string + required: true + description: unique id of an attachment + example: ATTACHMENTID + - name: attachment + schema: string + required: true + description: '' + example: ATTACHMENT + responses: + - statusCode: default + description: '' + - url: /assessments/{assessmentOrderId}/results/{resultId}/attachments + method: getList + httpMethod: get + tag: attachments + typeScriptTag: attachments + description: List assessment results + parameters: + - name: assessmentOrderId + schema: string + required: true + description: unique id of an assessment order + example: ASSESSMENTORDERID + - name: resultId + schema: string + required: true + description: unique result id + example: RESULTID + - name: limit + schema: integer + description: number of elements to return. max value is 100 + - name: offset + schema: integer + description: number of elements to skip while processing result + responses: + - statusCode: default + description: '' + - url: /assessments/{assessmentOrderId}/results/{resultId}/attachments + method: submitNewAssessmentResultFile + httpMethod: post + tag: attachments + typeScriptTag: attachments + description: Attach assessment results + parameters: + - name: assessmentOrderId + schema: string + required: true + description: unique id of an assessment order + example: ASSESSMENTORDERID + - name: resultId + schema: string + required: true + description: unique result id + example: RESULTID + - name: attachment + schema: string + required: true + description: '' + example: ATTACHMENT + responses: + - statusCode: default + description: '' + - url: /assessments/{assessmentOrderId}/results/{resultId} + method: findById + httpMethod: get + tag: results + typeScriptTag: results + description: Get assessment results by id + parameters: + - name: assessmentOrderId + schema: string + required: true + description: unique id of an assessment order + example: ASSESSMENTORDERID + - name: resultId + schema: string + required: true + description: unique id of an assessment result + example: RESULTID + responses: + - statusCode: default + description: '' + - url: /assessments/{assessmentOrderId}/results + method: listByAssessmentOrderId + httpMethod: get + tag: results + typeScriptTag: results + description: List assessment results + parameters: + - name: assessmentOrderId + schema: string + required: true + description: unique id of an assessment order + example: ASSESSMENTORDERID + - name: limit + schema: integer + description: number of elements to return. max value is 100 + - name: offset + schema: integer + description: number of elements to skip while processing result + responses: + - statusCode: default + description: '' + - url: /assessments/{assessmentOrderId}/results + method: submitNewAssessmentResult + httpMethod: post + tag: results + typeScriptTag: results + description: Submit assessment results + parameters: + - name: assessmentOrderId + schema: string + required: true + description: unique id of an assessment order + example: ASSESSMENTORDERID + - name: title + schema: string + required: true + description: '' + example: TITLE + - name: description + schema: string + required: true + description: '' + example: DESCRIPTION + - name: id + schema: string + required: false + description: '' + - name: createDate + schema: string + required: false + description: '' + - name: passed + schema: boolean + required: false + description: '' + - name: score + schema: string + required: false + description: '' + - name: author + schema: object + required: false + description: '' + - name: result + schema: string + required: false + description: '' + - name: resultType + schema: string + required: false + description: '' + responses: + - statusCode: default + description: '' + - url: /assessments/{assessmentOrderId}/accept + method: acceptOrder + httpMethod: post + tag: assessments + typeScriptTag: assessments + description: Accept Assessment order + parameters: + - name: assessmentOrderId + schema: string + required: true + description: unique id of an assessment order + example: ASSESSMENTORDERID + - name: message + schema: string + required: true + description: '' + example: MESSAGE + - name: messageToCandidate + schema: string + required: false + description: '' + - name: assessmentURL + schema: string + required: false + description: '' + - name: author + schema: object + required: false + description: '' + responses: + - statusCode: default + description: '' + - url: /assessments/{assessmentOrderId}/complete + method: markAsCompleted + httpMethod: post + tag: assessments + typeScriptTag: assessments + description: Complete Assessment order + parameters: + - name: assessmentOrderId + schema: string + required: true + description: unique id of an assessment order + example: ASSESSMENTORDERID + - name: message + schema: string + required: true + description: '' + example: MESSAGE + - name: messageToCandidate + schema: string + required: false + description: '' + - name: assessmentURL + schema: string + required: false + description: '' + - name: author + schema: object + required: false + description: '' + responses: + - statusCode: default + description: '' + - url: /assessments/{assessmentOrderId} + method: getById + httpMethod: get + tag: assessments + typeScriptTag: assessments + description: Get Assessment Order by id + parameters: + - name: assessmentOrderId + schema: string + required: true + description: unique id of an assessment order + example: ASSESSMENTORDERID + responses: + - statusCode: default + description: '' + - url: /assessments + method: listByCriteria + httpMethod: get + tag: assessments + typeScriptTag: assessments + description: Get Assessment orders by criteria + parameters: + - name: limit + schema: integer + description: number of elements to return. max value is 100 + - name: offset + schema: integer + description: number of elements to skip while processing result + - name: status + schema: string + description: >- + assessment order status; available values: NEW, IN_PROGRESS, REJECTED, + COMPLETED + - name: fromDate + schema: string + description: >- + createDate filter. search will return only orders created after given + date. Date format need to comply with ISO8601 format: + yyyy-MM-ddTHH:mm:ss.SSSZZ + - name: toDate + schema: string + description: >- + createDate filter. search will return only orders created before given + date. Date format need to comply with ISO8601 format: + yyyy-MM-ddTHH:mm:ss.SSSZZ + - name: sortBy + schema: string + description: 'sorting criteria. Available options: createDate' + - name: sortDir + schema: string + description: 'sorting direction. Available options: asc, desc' + default: asc + - name: candidateUuid + schema: string + description: UUID of a candidate. Corresponds to candidate ID used in Customer API + - name: jobUuid + schema: string + description: UUID of a job. Corresponds to job ID used in Customer API + responses: + - statusCode: default + description: '' + - url: /assessments + method: createNewOrder + httpMethod: post + tag: assessments + typeScriptTag: assessments + description: >- + insert new Assessment order - end point for testing only - it will not + create valid assessment order + parameters: + - name: status + schema: string + description: '' + - name: requestor + schema: object + description: '' + - name: candidate + schema: object + description: '' + - name: job + schema: object + description: '' + - name: company + schema: object + description: '' + - name: offer + schema: object + description: '' + responses: + - statusCode: default + description: '' + - url: /assessments/{assessmentOrderId}/reject + method: rejectOrder + httpMethod: post + tag: assessments + typeScriptTag: assessments + description: Reject Assessment order + parameters: + - name: assessmentOrderId + schema: string + required: true + description: unique id of an assessment order + example: ASSESSMENTORDERID + - name: message + schema: string + required: true + description: '' + example: MESSAGE + - name: messageToCandidate + schema: string + required: false + description: '' + - name: assessmentURL + schema: string + required: false + description: '' + - name: author + schema: object + required: false + description: '' + responses: + - statusCode: default + description: '' + - url: /configs + method: getList + httpMethod: get + tag: configs + typeScriptTag: configs + description: Fetch list of vendor configs + parameters: [] + responses: + - statusCode: default + description: '' + - url: /configs + method: addNewConfig + httpMethod: post + tag: configs + typeScriptTag: configs + description: Add new config + parameters: + - name: id + schema: string + required: true + description: '' + example: ID + - name: value + schema: string + required: false + description: '' + responses: + - statusCode: default + description: '' + - url: /configs/{configId} + method: getByConfigId + httpMethod: get + tag: configs + typeScriptTag: configs + description: Get config for vendor + parameters: + - name: configId + schema: string + required: true + description: unique id of a config entry + example: CONFIGID + responses: + - statusCode: default + description: '' + - url: /configs/{configId} + method: updateConfigById + httpMethod: post + tag: configs + typeScriptTag: configs + description: Update config + parameters: + - name: configId + schema: string + required: true + description: unique id of a config entry + example: CONFIGID + - name: id + schema: string + required: true + description: '' + example: ID + - name: value + schema: string + required: false + description: '' + responses: + - statusCode: default + description: '' + - url: /offers/{offerId} + method: getById + httpMethod: get + tag: offers + typeScriptTag: offers + description: Get offer by id + parameters: + - name: offerId + schema: string + required: true + description: unique id of an offer + example: OFFERID + responses: + - statusCode: default + description: '' + - url: /offers/{offerId} + method: updateOffer + httpMethod: post + tag: offers + typeScriptTag: offers + description: Update offer + parameters: + - name: offerId + schema: string + required: true + description: unique id of an offer + example: OFFERID + - name: description + schema: string + required: true + description: '' + example: DESCRIPTION + - name: id + schema: string + required: false + description: '' + - name: createDate + schema: string + required: false + description: '' + - name: lastUpdateDate + schema: string + required: false + description: '' + - name: catalogId + schema: string + required: true + description: '' + example: CATALOGID + - name: name + schema: string + required: true + description: '' + example: NAME + - name: category + schema: string + required: false + description: '' + - name: terms + schema: object + required: true + description: '' + - name: status + schema: string + required: false + description: '' + - name: targetMarket + schema: object + required: false + description: '' + - name: availability + schema: object + required: false + description: '' + responses: + - statusCode: default + description: '' + - url: /offers/{offerId}/submit + method: submitForReview + httpMethod: post + tag: offers + typeScriptTag: offers + description: Submit offer + parameters: + - name: offerId + schema: string + required: true + description: unique id of an offer + example: OFFERID + responses: + - statusCode: default + description: '' + - url: /offers/{offerId}/withdraw + method: withdrawal + httpMethod: post + tag: offers + typeScriptTag: offers + description: Withdraw offer + parameters: + - name: offerId + schema: string + required: true + description: unique id of an offer + example: OFFERID + responses: + - statusCode: default + description: '' + - url: /v1/companies/{companyIdentifier}/postings + method: listByCompanyIdentifier + httpMethod: get + tag: postings + typeScriptTag: postings + description: Lists active postings published by given company + parameters: + - name: acceptLanguage + schema: string + description: Language of translation + - name: companyIdentifier + schema: string + required: true + description: Identifier of a company + example: COMPANYIDENTIFIER + - name: q + schema: string + required: false + description: full-text search query based on a job title, location + - name: limit + schema: integer + required: false + description: number of elements to return. max value is 100 + - name: offset + schema: integer + required: false + description: number of elements to skip while processing result + - name: destination + schema: string + required: false + description: > + Filter indicating which postings to return: + + * **PUBLIC**: response will include ONLY public postings + + * **INTERNAL**: response will include ONLY internal postings + + * **INTERNAL_OR_PUBLIC**: response will include internal postings or + public postings, but not both for a single job. If a job has both + types of postings, only internal postings will be returned. NOTE: when + selected, all postings, internal and public, will be treated as + internal. Among other things, this means that screening questions will + not be displayed, and candidates will be marked with the EMPLOYEE + label. + - name: locationType + schema: string + required: false + description: > + Filter indicating which postings to return: + + * **REMOTE**: response will include ONLY postings with remote location + type + + * **ONSITE**: response will include ONLY postings with onsite location + type + + * **ANY**: response will include ANY location type + - name: country + schema: string + required: false + description: country code filter (part of the location object) + - name: region + schema: string + required: false + description: region filter (part of the location object) + - name: city + schema: string + required: false + description: city filter (part of the location object) + - name: department + schema: string + required: false + description: department filter (department id) + - name: language + schema: array + required: false + description: > + Job ad language; accepts 2-letter ISO 639-1 language code; multiple + codes can be provided, separated by comma (",") + + Exceptions to the language code ISO format: + + * "en-GB" - "English - English + (https://developers.smartrecruiters.com/reference" + + * "fr-CA" - "French - français + (https://developers.smartrecruiters.com/reference" + + * "pt-BR" - "Portugal - português + (https://developers.smartrecruiters.com/reference" + + * "pt-PT" - "Portugal - português + (https://developers.smartrecruiters.com/reference" + + * "zh-TW" - "Chinese (https://developers.smartrecruiters.com/reference + - 中文 (香港)" + + * "zh-CN" - "Chinese (https://developers.smartrecruiters.com/reference + - 中文 (简体)" + - name: releasedAfter + schema: string + required: false + description: > + Released after filter + (https://developers.smartrecruiters.com/reference + + Format: yyyy-MM-ddTHH:mm:ss.SSSZZ + - name: customField + schema: object + required: false + description: > + Filters postings by custom fields. Multiple custom field values can be + provided, separated by comma (","). + + Format: + custom_field.CUSTOM_FIELD_ID=CUSTOM_FIELD_VALUE1_ID,CUSTOM_FIELD_VALUE2_ID + example: + custom_field.52d95747e4b0ba7acb9217ea: 23aba1d4-4c81-48f7-9ae2-3ab84ee32a80 + responses: + - statusCode: '200' + description: '' + - url: /v1/companies/{companyIdentifier}/postings/{postingId} + method: getByPostingIdOrUuid + httpMethod: get + tag: postings + typeScriptTag: postings + description: Get posting by posting id or uuid for given company + parameters: + - name: acceptLanguage + schema: string + description: Language of translation + - name: companyIdentifier + schema: string + required: true + description: Identifier of a company + example: COMPANYIDENTIFIER + - name: postingId + schema: string + required: true + description: Posting identifier or uuid + example: POSTINGID + - name: sourceTypeId + schema: string + required: false + description: >- + sourceTypeId can be retrieved using [get + /configuration/sources](https://developers.smartrecruiters.com/reference/configurationsourcetypes-1) + endpoint. Used together with **sourceId** and **sourceSubTypeId** to + add source tracking parameter to **applyUrl**. + - name: sourceSubTypeId + schema: string + required: false + description: >- + sourceSubTypeId can be retrieved using [get + /configuration/sources](https://developers.smartrecruiters.com/reference/configurationsourcetypes-1) + endpoint. Used together with **sourceId** and **sourceTypeId** to add + source tracking parameter to **applyUrl**. + - name: sourceId + schema: string + required: false + description: >- + sourceId can be retrieved using [get + /configuration/sources/{sourceType}/values](https://developers.smartrecruiters.com/reference/configurationsourcevaluesall-1) + endpoint. Used together with **sourceTypeId** and **sourceSubTypeId** + to add source tracking parameter to **applyUrl**. + responses: + - statusCode: '200' + description: '' + - url: /v1/companies/{companyIdentifier}/departments + method: listDepartmentsForCompany + httpMethod: get + tag: postings + typeScriptTag: postings + description: List departments for given company + parameters: + - name: acceptLanguage + schema: string + description: Language of translation + - name: companyIdentifier + schema: string + required: true + description: Identifier of a company + example: COMPANYIDENTIFIER + responses: + - statusCode: '200' + description: '' + - url: /files/{reportFileId}/data + method: downloadReportData + httpMethod: get + tag: files + typeScriptTag: files + description: Download report file + parameters: + - name: reportFileId + schema: string + required: true + description: Report file identifier + example: REPORTFILEID + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /files/{reportFileId} + method: getFileDetails + httpMethod: get + tag: files + typeScriptTag: files + description: Get report file + parameters: + - name: reportFileId + schema: string + required: true + description: Report file identifier + example: REPORTFILEID + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /reports/{reportId}/files/recent/data + method: downloadRecentFile + httpMethod: get + tag: reports + typeScriptTag: reports + description: Download most recent report file + parameters: + - name: ifNoneMatch + schema: string + description: Report file ETag to be compared with the most recent report file + - name: reportId + schema: string + required: true + description: Report identifier + example: REPORTID + responses: + - statusCode: '200' + description: '' + - statusCode: '304' + description: Returned when there's no newer report file available. + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /reports/{reportId}/files + method: getReportFiles + httpMethod: get + tag: reports + typeScriptTag: reports + description: Get report files + parameters: + - name: page + schema: string + description: Opaque page identifier to be returned. + - name: limit + schema: integer + description: Number of entities that should be returned per page. + default: 10 + - name: reportId + schema: string + required: true + description: Report identifier + example: REPORTID + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /reports/{reportId}/files + method: generateAdhocReportFile + httpMethod: post + tag: reports + typeScriptTag: reports + description: Generate ad-hoc report + parameters: + - name: reportId + schema: string + required: true + description: Report identifier + example: REPORTID + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - statusCode: '409' + description: '' + - url: /reports/{reportId}/files/recent + method: getRecentFile + httpMethod: get + tag: reports + typeScriptTag: reports + description: Get most recent report file + parameters: + - name: ifNoneMatch + schema: string + description: Report file ETag to be compared with the most recent report file + - name: reportId + schema: string + required: true + description: Report identifier + example: REPORTID + responses: + - statusCode: '200' + description: '' + - statusCode: '304' + description: Returned when there's no newer report file available. + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /reports/{reportId} + method: getDetails + httpMethod: get + tag: reports + typeScriptTag: reports + description: Get report + parameters: + - name: reportId + schema: string + required: true + description: Report identifier + example: REPORTID + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: Returned when there is no report with the given ID. + - url: /reports + method: listByModificationDate + httpMethod: get + tag: reports + typeScriptTag: reports + description: Get reports + parameters: + - name: page + schema: string + description: Opaque page identifier to be returned. + - name: limit + schema: integer + description: Number of entities that should be returned per page. + default: 10 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - url: /reviews + method: getAllForCandidateJob + httpMethod: get + tag: reviews + typeScriptTag: reviews + description: Retrieves all reviews for specified candidate and job + parameters: + - name: candidateId + schema: string + required: true + description: ID of the candidate + example: CANDIDATEID + - name: jobId + schema: string + required: true + description: ID of the job + example: JOBID + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - url: /reviews + method: createReview + httpMethod: post + tag: reviews + typeScriptTag: reviews + description: Creates a review + parameters: + - name: reviewerId + schema: string + required: false + description: '' + - name: candidateId + schema: string + required: true + description: '' + example: CANDIDATEID + - name: jobId + schema: string + required: true + description: '' + example: JOBID + - name: overallRating + schema: integer + required: true + description: '' + example: 0 + - name: comment + schema: string + required: false + description: '' + - name: createdOn + schema: string + required: false + description: '' + responses: + - statusCode: '201' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '422' + description: '' + - statusCode: '500' + description: '' + - url: /reviews/{reviewId} + method: deleteReviewById + httpMethod: delete + tag: reviews + typeScriptTag: reviews + description: Deletes a review + parameters: + - name: reviewerId + schema: string + required: true + description: ID of the reviewer + example: REVIEWERID + responses: + - statusCode: '204' + description: Review was deleted + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - statusCode: '422' + description: > + When input validation fails or with codes: + + * **NON_EXISTING_REVIEWER** when reviewer does not exist + + * **INACTIVE_OR_DELETED_REVIEWER** when reviewer is inactive or + deleted + + * **REVIEWER_ID_DOES_NOT_MATCH** when reviewer id does not match + reviewer id in review + - statusCode: '500' + description: '' + - url: /reviews/{reviewId} + method: getById + httpMethod: get + tag: reviews + typeScriptTag: reviews + description: Retrieves a review + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - url: /reviews/{reviewId} + method: updateReviewById + httpMethod: patch + tag: reviews + typeScriptTag: reviews + description: Updates a review + parameters: + - name: overallRating + schema: integer + required: false + description: '' + - name: comment + schema: string + required: false + description: '' + - name: reviewerId + schema: string + required: true + description: '' + example: REVIEWERID + responses: + - statusCode: '204' + description: Review was updated + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - statusCode: '422' + description: > + When input validation fails or with codes: + + * **INVALID_OVERALL** when invalid overall + + * **NON_EXISTING_REVIEWER** when reviewer does not exist + + * **INACTIVE_OR_DELETED_REVIEWER** when reviewer is inactive or + deleted + + * **REVIEWER_ID_DOES_NOT_MATCH** when reviewer id does not match + reviewer id in review + - statusCode: '500' + description: '' + - url: /new-hires/{newHireId} + method: getDetails + httpMethod: get + tag: new-hires + typeScriptTag: newHires + description: Returns details for a single New Hire + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - url: /onboarding-processes/{onboardingProcessId} + method: getDetails + httpMethod: get + tag: onboarding-processes + typeScriptTag: onboardingProcesses + description: Returns details of a single Onboarding Process + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - url: /web-form-assignments/{webFormAssignmentId}/form-answers + method: getFormAnswers + httpMethod: get + tag: assignments-submissions + typeScriptTag: assignmentsSubmissions + description: Returns answers submitted for a single Web Form Assignment + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - url: /web-form-assignments/{webFormAssignmentId}/fields-metadata + method: getFieldsMetadata + httpMethod: get + tag: assignments-submissions + typeScriptTag: assignmentsSubmissions + description: >- + Returns metadata for the fields that belong to a single Web Form + Assignment + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - url: /fillable-pdf-form-assignments/{fillablePdfFormAssignmentId}/form-answers + method: getFormAnswers + httpMethod: get + tag: assignments-submissions + typeScriptTag: assignmentsSubmissions + description: Returns answers submitted for a single Fillable PDF Form Assignment + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - url: /onboarding-processes/{onboardingProcessId}/assignments + method: getByProcessId + httpMethod: get + tag: assignments + typeScriptTag: assignments + description: Returns Assignments associated with a single Onboarding Process + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - url: /activity-assignments/{activityAssignmentId}/attachments + method: listAttachments + httpMethod: get + tag: assignments-submissions + typeScriptTag: assignmentsSubmissions + description: Returns list of Attachments submitted for a single Activity Assignment + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - url: /activity-assignments/{activityAssignmentId}/attachments/{attachmentId} + method: getSingleAttachment + httpMethod: get + tag: assignments-submissions + typeScriptTag: assignmentsSubmissions + description: Returns single Attachment for specific Activity Assignment + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - url: /users + method: list + httpMethod: get + tag: users + typeScriptTag: users + description: List users of your company + parameters: + - name: q + schema: string + description: full-text search query based on firstName, lastName, email + - name: limit + schema: integer + description: number of elements to return. max value is 100 + default: 100 + - name: offset + schema: integer + description: number of elements to skip while processing result + default: 0 + - name: updatedAfter + schema: string + description: >- + ISO8601-formatted time boundaries for the user update time, Format: + yyyy-MM-ddTHH:mm:ss.SSSZZ + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '403' + description: '' + - url: /users + method: createNewUser + httpMethod: post + tag: users + typeScriptTag: users + description: Create a new user + parameters: [] + responses: + - statusCode: '201' + description: '' + - statusCode: '400' + description: '' + - statusCode: '403' + description: '' + - statusCode: '409' + description: '' + - statusCode: '422' + description: '' + - url: /users/me + method: getDetails + httpMethod: get + tag: users + typeScriptTag: users + description: Get details of my user + parameters: [] + responses: + - statusCode: '200' + description: '' + - url: /users/{id} + method: deactivateUser + httpMethod: delete + tag: users + typeScriptTag: users + description: Deactivate a user + parameters: [] + responses: + - statusCode: '204' + description: User successfully deactivated + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /users/{id} + method: getDetails + httpMethod: get + tag: users + typeScriptTag: users + description: Get details of a user with given id + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /users/{id} + method: updateUserById + httpMethod: patch + tag: users + typeScriptTag: users + description: Update a user + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - statusCode: '409' + description: '' + - url: /users/{id}/reset-password + method: sendPasswordResetEmail + httpMethod: post + tag: users + typeScriptTag: users + description: Send a password reset email to a user + parameters: [] + responses: + - statusCode: '204' + description: The password reset email successfully sent + - statusCode: '400' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /users/{id}/activation-email + method: sendActivationEmail + httpMethod: post + tag: users + typeScriptTag: users + description: Send an activation email to a user + parameters: [] + responses: + - statusCode: '204' + description: Activation email successfully sent + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - statusCode: '422' + description: '' + - url: /users/{id}/activation + method: deactivateUserById + httpMethod: delete + tag: users + typeScriptTag: users + description: Deactivate a user + parameters: [] + responses: + - statusCode: '204' + description: User successfully deactivated + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /users/{id}/activation + method: activateUser + httpMethod: put + tag: users + typeScriptTag: users + description: Activate a user + parameters: [] + responses: + - statusCode: '204' + description: User successfully activated + - statusCode: '400' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - statusCode: '409' + description: '' + - url: /users/{id}/avatar + method: updateAvatar + httpMethod: put + tag: users + typeScriptTag: users + description: Update user avatar + parameters: + - name: file + schema: string + required: true + description: '' + example: FILE + responses: + - statusCode: '204' + description: Avatar successfully updated + - statusCode: '400' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /system-roles + method: listSystemRoles + httpMethod: get + tag: users + typeScriptTag: users + description: List system roles + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '403' + description: '' + - url: /access-groups + method: listAccessGroups + httpMethod: get + tag: users + typeScriptTag: users + description: List access groups configured in your company + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '403' + description: '' + - url: /access-groups/{accessGroupId}/users/{id} + method: removeFromAccessGroup + httpMethod: delete + tag: users + typeScriptTag: users + description: Remove user from access group + parameters: [] + responses: + - statusCode: '204' + description: User successfully removed from access group + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /access-groups/{accessGroupId}/users + method: assignToAccessGroup + httpMethod: post + tag: users + typeScriptTag: users + description: Assign users to access group + parameters: [] + responses: + - statusCode: '201' + description: '' + - statusCode: '400' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /subscriptions + method: getWebhookSubscriptions + httpMethod: get + tag: subscriptions + typeScriptTag: subscriptions + description: Retrieve webhook subscriptions. + parameters: + - name: pageId + schema: string + required: false + description: identifier of the next page of subscriptions + - name: limit + schema: integer + description: number of elements to return + default: 10 + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: Unauthorized + - statusCode: '403' + description: '' + - url: /subscriptions + method: subscribeToWebhook + httpMethod: post + tag: subscriptions + typeScriptTag: subscriptions + description: Subscribe to a webhook. + parameters: + - name: callbackUrl + schema: string + required: true + description: '' + example: https://server.com/send/callback/here + - name: events + schema: array + required: true + description: '' + - name: alertingEmailAddress + schema: string + required: false + description: '' + example: webhook.alerts@domain.com + - name: callbackAuthentication + schema: object + required: false + description: '' + example: + type: header + headerName: X-TOKEN + headerValue: J?7HSgUKm7!MPm+EKm^P4BwW4ywRRRVu + responses: + - statusCode: '201' + description: '' + - statusCode: '400' + description: '' + - statusCode: '403' + description: '' + - statusCode: '422' + description: '' + - url: /subscriptions/{id} + method: deleteWebhookSubscription + httpMethod: delete + tag: subscriptions + typeScriptTag: subscriptions + description: Delete webhook subscription. + parameters: [] + responses: + - statusCode: '204' + description: Webhook subscription deleted. + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /subscriptions/{id} + method: getSingleWebhook + httpMethod: get + tag: subscriptions + typeScriptTag: subscriptions + description: Retrieve single webhook subscription. + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /subscriptions/{id}/activation + method: activateWebhookSubscription + httpMethod: put + tag: subscriptions + typeScriptTag: subscriptions + description: Activate webhook subscription. + parameters: [] + responses: + - statusCode: '204' + description: Subscription activated. + - statusCode: '404' + description: '' + - statusCode: '409' + description: '' + - statusCode: '424' + description: '' + - url: /subscriptions/{id}/secret-key + method: getSecretKey + httpMethod: get + tag: subscriptions + typeScriptTag: subscriptions + description: Retrieve subscription secret key + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /subscriptions/{id}/secret-key + method: generateSecretKey + httpMethod: post + tag: subscriptions + typeScriptTag: subscriptions + description: Generate secret key for a webhook subscription. + parameters: [] + responses: + - statusCode: '201' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /subscriptions/{id}/callbacks-log + method: getCallbackDetails + httpMethod: get + tag: subscriptions + typeScriptTag: subscriptions + description: Retrieve callback request details starting from newest. + parameters: + - name: id + schema: string + required: true + description: subscription identifier + example: ID + - name: pageId + schema: string + required: false + description: identifier of the next page of subscriptions + - name: limit + schema: integer + description: number of elements to return + default: 10 + - name: callbackStatus + schema: string + description: status of callback, whan absent all statuses will be returned + - name: after + schema: string + description: > + Requests sent after timestamp. Min value is 30 days ago. Format + ISO8601: yyyy-MM-ddTHH:mm:ss.SSSZZ + - name: before + schema: string + description: > + Requests sent before timestamp. Min value is 30 days ago. Format + ISO8601: yyyy-MM-ddTHH:mm:ss.SSSZZ + responses: + - statusCode: '200' + description: '' +numberOfSchemas: 373 +apiDescription: SmartOnboard Public API diff --git a/sdks/db/category-cache.yaml b/sdks/db/category-cache.yaml index 32c22c40a..62aa1d9c0 100644 --- a/sdks/db/category-cache.yaml +++ b/sdks/db/category-cache.yaml @@ -236,3 +236,4 @@ apis: BL.INK-undefined: URL Shortener interviewstream-undefined: HR Talent & Recruitment Wink-undefined: eCommerce + SmartRecruiters-undefined: HR Talent & Recruitment diff --git a/sdks/db/custom-request-last-fetched.yaml b/sdks/db/custom-request-last-fetched.yaml index f0c7754a5..ee21ec8f2 100644 --- a/sdks/db/custom-request-last-fetched.yaml +++ b/sdks/db/custom-request-last-fetched.yaml @@ -217,3 +217,4 @@ lastUpdated: bl.ink: 2024-03-28T00:14:23.910Z interviewstream.com: 2024-03-28T00:22:58.027Z wink.travel: 2024-03-28T00:20:28.143Z + smartrecruiters.com: 2024-03-28T00:27:18.977Z diff --git a/sdks/db/custom-request-specs/smartrecruiters.com.yaml b/sdks/db/custom-request-specs/smartrecruiters.com.yaml new file mode 100644 index 000000000..cb43fdffc --- /dev/null +++ b/sdks/db/custom-request-specs/smartrecruiters.com.yaml @@ -0,0 +1,20104 @@ +openapi: 3.0.2 +info: + title: Webhooks + contact: + name: SmartRecruiters + url: https://developers.smartrecruiters.com + version: '201910.4' + description: SmartOnboard Public API +servers: + - url: https://api.smartrecruiters.com/webhooks-api/v201907 +paths: + /postings/{uuid}/candidates: + post: + tags: + - Application API + summary: Create a New Candidate Application + description: >- + Operation is done on behalf of a candidate – they can access and edit + the data, including attachments + externalDocs: + url: https://developers.smartrecruiters.com/docs/post-an-application + operationId: createCandidate + parameters: + - name: uuid + in: path + description: Posting UUID + required: true + schema: + pattern: >- + [a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12} + type: string + requestBody: + description: New candidate data + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiRequest' + required: true + responses: + '200': + description: Successful request + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiResponse' + '400': + description: Invalid request + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + '401': + description: Unauthenticated + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + '429': + description: 'Too Many Requests ' + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + security: + - key: [] + /postings/{uuid}/candidates/{candidateId}/status: + get: + tags: + - Application API + summary: Get candidate status + externalDocs: + url: >- + https://developers.smartrecruiters.com/docs/get-candidate-application-status + operationId: getApplicationStatus + parameters: + - name: uuid + in: path + description: Posting UUID + required: true + schema: + pattern: >- + [a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12} + type: string + - name: candidateId + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful request + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationStatusInfo' + '400': + description: Invalid request + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + '401': + description: Unauthenticated + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + '429': + description: 'Too Many Requests ' + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + security: + - key: [] + /postings/{uuid}/configuration: + get: + tags: + - Application API + summary: Get application configuration for posting + description: > + Returns application configuration for posting. + + Configuration contains screening questions, privacy policies and + settings. + + Optionally, conditional questions can be included in the response. + externalDocs: + url: >- + https://developers.smartrecruiters.com/docs/get-application-screening-questions-and-privacy-policies + operationId: getApplyConfigurationForPosting + parameters: + - name: Accept-Language + in: header + description: Language for screening questions. By default 'en'. + schema: + type: string + - name: uuid + in: path + description: Posting UUID + required: true + schema: + pattern: >- + [a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12} + type: string + - name: conditionalsIncluded + in: query + description: > + Specifies whether conditional questions should be returned in the + response. 'false' if not specified + + - Only available for BETA customers + schema: + type: boolean + responses: + '200': + description: Successful request + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyConfiguration' + '400': + description: Invalid request + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + '401': + description: Unauthenticated + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + '429': + description: 'Too Many Requests ' + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + security: + - key: [] + /approvals/{approvalRequestId}: + get: + summary: Get approval request by id + parameters: + - name: approvalRequestId + in: path + description: Approval request identifier + required: true + schema: + type: string + responses: + '200': + description: Found approval request + content: + application/json: + schema: + $ref: '#/components/schemas/ApprovalRequest' + '404': + description: | + with code + * **APPROVAL_REQUEST_NOT_FOUND** when approval request is not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + operationId: approvals.getById + security: + - key: [] + - oauth: + - approvals_read + tags: + - approvals + /approvals/{approvalRequestId}/comments: + get: + summary: Get comments for given approval request + parameters: + - name: approvalRequestId + in: path + description: Approval request identifier + required: true + schema: + type: string + responses: + '200': + description: Found comments + content: + application/json: + schema: + $ref: '#/components/schemas/Comments' + '404': + description: | + with code + * **APPROVAL_REQUEST_NOT_FOUND** when approval request is not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + operationId: approvals.comments.get + security: + - key: [] + - oauth: + - approvals_read + tags: + - approvals + post: + summary: Add comment to given approval request + parameters: + - name: approvalRequestId + in: path + description: Approval request identifier + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + type: object + required: + - content + - authorId + properties: + content: + type: string + maxLength: 10000 + authorId: + type: string + responses: + '201': + description: Created comment + content: + application/json: + schema: + $ref: '#/components/schemas/Comment' + '400': + description: > + + * **COMMENT_CONTAINS_ILLEGAL_CHARACTERS** when comment contains + illegal characters + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: | + + * **UNAUTHORIZED_ACCESS** when no permissions to add a comment + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + * **APPROVAL_REQUEST_NOT_FOUND** when approval request is not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Input validation fails + operationId: approvals.comments.create + security: + - key: [] + - oauth: + - approvals_read + tags: + - approvals + /approvals: + get: + summary: Get pending approvals requests where you are an approver. + description: The max number of returned approval requests is 100. + parameters: + - name: pageId + description: > + Identifier for the paged list of approval requests. To get the first + page of approval request, leave it blank. + in: query + required: false + schema: + type: string + responses: + '200': + description: Approval requests + content: + application/json: + schema: + $ref: '#/components/schemas/ApprovalRequests' + headers: + Link: + schema: + type: string + description: | + Links to related resources, in the format defined by + [RFC 8288](https://tools.ietf.org/html/rfc8288). + This will include a link with relation type `next` to the + next page, if there is a next page. + '400': + description: | + Unable to retrieve approval requests with codes + * **INVALID_PAGE_ID** when pageId is incorrect + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + operationId: approvals.get + security: + - key: [] + - oauth: + - approvals_read + tags: + - approvals + post: + summary: Create approval request + description: > + The new approval request will be created based on approval request with + provided baseId. If base approval request is pending, it will be + abandoned. The newly created request will contain new id, type, decision + mode and steps, as well as PENDING statuses and decisions. + requestBody: + content: + application/json: + schema: + type: object + required: + - baseId + - type + - decisionMode + - steps + properties: + baseId: + $ref: '#/components/schemas/ApprovalRequestId' + type: + $ref: '#/components/schemas/Type' + decisionMode: + $ref: '#/components/schemas/DecisionMode' + steps: + description: Steps to complete approval + type: array + minItems: 1 + items: + $ref: '#/components/schemas/StepInput' + responses: + '201': + description: Approval request created + content: + application/json: + schema: + $ref: '#/components/schemas/ApprovalRequest' + '400': + description: > + Unable to create approval request with codes + + * **BASE_ID_NOT_FOUND** when base approval request id doesn't exist + + * **APPROVER_ID_NOT_FOUND** when at least one of approver ids + doesn't exist + + * **INVALID_DECISION_MODE** when decisionMode is `all` and type is + `sequential`. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: > + Unable to create approval request with codes + + * **UNAUTHORIZED_ACCESS** when no permissions to create approval + request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + operationId: approvals.create + security: + - key: [] + - oauth: + - approvals_create + tags: + - approvals + /approvals/{approvalRequestId}/approve-decisions: + post: + summary: Approve the approval request by id + parameters: + - name: approvalRequestId + in: path + description: Approval request identifier + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + type: object + required: + - approverId + properties: + approverId: + type: string + responses: + '204': + description: Approval request approved + '400': + description: > + with code + + * **APPROVAL_REQUEST_NOT_FOUND** + + * **APPROVAL_COMPLETED** when approval request is already approved, + rejected or abandoned + + * **DECISION_NOT_YET_ALLOWED** when trying to take decision before + previous step completion + + * **APPROVER_NOT_ALLOWED** when user is not an approver in given + approval request + + * **DECISION_ALREADY_TAKEN** when approver is trying to modify + already taken decision + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + * **APPROVAL_REQUEST_NOT_FOUND** when approval request is not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + operationId: approvals.approve + security: + - key: [] + - oauth: + - approvals_read + - approvals_decide + tags: + - approvals + /approvals/{approvalRequestId}/reject-decisions: + post: + summary: Reject the approval request by id + parameters: + - name: approvalRequestId + in: path + description: Approval request identifier + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + type: object + required: + - approverId + - comment + properties: + approverId: + type: string + comment: + type: string + responses: + '204': + description: Approval request rejected + '400': + description: > + with code + + * **APPROVAL_REQUEST_NOT_FOUND** + + * **APPROVAL_COMPLETED** when approval request is already approved, + rejected or abandoned + + * **DECISION_NOT_YET_ALLOWED** when trying to take decision before + previous step completion + + * **APPROVER_NOT_ALLOWED** when user is not an approver in given + approval request + + * **DECISION_ALREADY_TAKEN** when approver is trying to modify + already taken decision + + * **COMMENT_IS_REQUIRED** when approver is trying reject without the + comment + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + * **APPROVAL_REQUEST_NOT_FOUND** when approval request is not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + operationId: approvals.reject + security: + - key: [] + - oauth: + - approvals_read + - approvals_decide + tags: + - approvals + /partner/configuration: + get: + tags: + - configuration + summary: get partner configuration + operationId: getPartnerConfig + responses: + '200': + description: Partner configuration + content: + application/json: + schema: + $ref: '#/components/schemas/PartnerConfiguration' + '401': + description: Unauthorized request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Request missed required scopes + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Configuration does not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - oauth2_master: + - partner_configuration_manage + put: + tags: + - configuration + summary: saves configuration for partner + description: Endpoint for saving partner's configuration. + operationId: savePartnerConfig + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PartnerConfigurationRequest' + responses: + '200': + description: Configuration created + content: + application/json: + schema: + $ref: '#/components/schemas/PartnerConfiguration' + '400': + description: Invalid configuration provided + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Request missed required scopes + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - oauth2_master: + - partner_configuration_manage + /integration/company/{companyId}: + post: + tags: + - integration + summary: enable the company integration + description: |2- + + Set up integration. + 1. Validates if token has client_credentials_write scope (created using master credentials) + 2. Validates if company gave consent for integration with partner + 3. Saves credentials send by the partner + 4. Created credentials for current company + 5. Sends created credentials back to partner + operationId: setUpIntegration + parameters: + - name: companyId + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ClientCredentials' + responses: + '200': + description: Customer-level integration credentials + content: + application/json: + schema: + $ref: '#/components/schemas/ClientCredentials' + '400': + description: Invalid request body + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + Request missed required scopes or company did not give consent for + integration + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Partner configuration does not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Partner already integrated for company + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - oauth2_master: + - partner_configuration_manage + /orders/{orderId}/results: + patch: + tags: + - result + summary: updates package result + description: >- + Updates results for package ordered. Follows RFC 7396 rules to describe + set of modifications. + operationId: packageResultUpdate + parameters: + - name: orderId + in: path + description: Order ID + required: true + schema: + type: string + format: uuid + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PackageResult' + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PackageResult' + '400': + description: Invalid result partial update provided + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Request missed required scopes + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Order with given id does not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '415': + description: Unsupported payload format + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - oauth2: + - assessment_result_manage + /orders/{orderId}/results/attachment: + post: + tags: + - result + summary: add attachment to order + description: >- + Add attachment to order. Adding attachment to inline assessment orders + is not supported. + operationId: addAttachmentToOrder + parameters: + - name: orderId + in: path + description: Order ID + required: true + schema: + type: string + format: uuid + requestBody: + content: + multipart/form-data: + schema: + type: string + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: '#/components/schemas/AttachmentResult' + '401': + description: Unauthorized request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Request missed required scopes + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Order with given id does not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /integration: + get: + tags: + - integration + summary: Shows consent form on partner side + description: >- + Endpoint to which SmartRecruiters will send request for consent. + + After that Partner will: + + 1. Create client credentials which may be used on SmartRecruiters side + + 2. Retrieve access_token using master client credentials + + 3. Send generated credentials using oauth token obtained + + In return SmartRecruiters would send client credentials for company + setting up the integration. + operationId: askForConsent + parameters: + - name: companyId + in: query + description: id of company setting up the integration + schema: + type: string + responses: + '200': + description: Page with consent for customer admin + content: + text/html: + schema: + type: string + /integrations/companies/{companyId}: + delete: + tags: + - integration + summary: Removes integration on partner side + operationId: deleteIntegration + parameters: + - name: companyId + in: path + description: id of company with integration + required: true + schema: + type: string + responses: + '204': + description: No Content + content: + application/json: + schema: + $ref: '#/components/schemas/Unit' + /packages: + get: + tags: + - packages + summary: Retrieves a list of packages + operationId: listPackages + parameters: + - name: requester + in: header + description: Information about recruiter requesting list of packages + required: false + schema: + $ref: '#/components/schemas/Requester' + - name: country-code + in: query + description: country code + required: false + schema: + type: string + - name: region-abbr + in: query + description: region abbreviation + required: false + schema: + type: string + - name: city + in: query + description: city + required: false + schema: + type: string + - name: address + in: query + description: address + required: false + schema: + type: string + - name: postal-code + in: query + description: postal code + required: false + schema: + type: string + - name: remote + in: query + description: describe whether job is remote or not + required: false + schema: + type: boolean + - name: partner-field-id + in: query + description: >- + Example partner field. Partner defines list of allowed fields in + configuration. Client binds job fields in his configuration. All + fields with non-empty values will be included in this call. + required: false + schema: + type: string + responses: + '200': + description: List of assessment packages + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/AssessmentPackage' + '204': + description: Returned when there are not packages to present + '400': + description: Invalid requester data in header + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Request missed required scopes + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - oauth2: + - packages_view + /packages/{assessmentPackageId}: + get: + tags: + - packages + summary: Retrieves a package by id + operationId: getPackageById + parameters: + - name: assessmentPackageId + in: path + required: true + schema: + type: string + responses: + '200': + description: Assessment package + content: + application/json: + schema: + $ref: '#/components/schemas/AssessmentPackage' + '401': + description: Unauthorized request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Request missed required scopes + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: No assessment package with given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - oauth2: + - packages_view + /packages/orders: + post: + tags: + - orders + summary: Orders assessment package for candidate + operationId: ordersAssessmentPackage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AssessmentPackageOrderRequest' + responses: + '202': + description: Order acceptance + content: + application/json: + schema: + $ref: '#/components/schemas/Unit' + '401': + description: Unauthorized request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Request missed required scopes + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: There is no package which was ordered + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - oauth2: + - orders_modify + /packages/inline/orders: + post: + tags: + - orders + summary: Orders inline assessment package for candidate + operationId: ordersInlineAssessmentPackage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/InlineAssessmentPackageOrderRequest' + responses: + '200': + description: Response containing url to inline assessment + content: + application/json: + schema: + $ref: '#/components/schemas/InlineAssessmentPackageResponse' + '401': + description: Unauthorized request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Request missed required scopes + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: There is no package which was ordered + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - oauth2: + - orders_modify + /oauth/token: + post: + tags: + - token + summary: Exchange credentials for an access token + description: >- + SmartRecruiters will call this endpoint to exchange the credentials + received from Partner for an access token. + operationId: getToken + requestBody: + content: + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TokenInput' + responses: + '200': + description: Access token + content: + application/json: + schema: + $ref: '#/components/schemas/AccessToken' + '400': + description: Error Response https://tools.ietf.org/html/rfc6749#section-5.2 + content: + application/json: + schema: + $ref: '#/components/schemas/TokenErrorResponse' + /assessment-orders: + get: + summary: Retrieves all assessment orders for specified application + parameters: + - in: query + name: applicationId + description: ID of the application + required: true + schema: + $ref: '#/components/schemas/Uuid' + responses: + '200': + description: Assessment orders were retrieved + content: + application/json: + schema: + $ref: '#/components/schemas/AssessmentOrders' + '401': + description: > + with codes: + + * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is not + authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **APPLICATION_NOT_FOUND** when there is no application with given + id + + * **MISSING_COMPANY_INTEGRATION** when no integration with + assessment partner was found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + operationId: orders.getList + security: + - key: [] + - oauth: + - assessment_orders_read + tags: + - assessment orders + /audit-events: + get: + responses: + '200': + description: A single page of audit events + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/Events' + '403': + description: Audit events access forbidden. ADMINISTRATOR role is required. + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Data collected via the Audit API will be retained at least 26 months. + When `eventDateAfter` and `eventDateBefore` are not set, by default, the + time range is set to the last 7 days. Below is the list of the events + that are currently exposed in the API: + + * **USER_ACCOUNT_ACTIVATED** - user account has been activated, user can + now login to the system + + * **USER_ACCOUNT_CREATED** - user account has been created, in order to + log in to the system account has to be activated first + + * **USER_ACCOUNT_DEACTIVATED** - user account has been deactivated, + logging possibility disabled for the user + + * **USER_ACCOUNT_UPDATED** - user account has been modified + + * **USER_AUTHENTICATION_INVALID_CREDENTIALS** - user authentication + failed due to invalid credentials. + + Additional context represents the type of the authentication method: + + ```json + + context: { + authenticationType: "PASSWORD" + } + + ``` + + * **USER_AUTHENTICATION_SUCCESS** - user authentication succeeded + + Additional context represents the type of the authentication method: + + ```json + + context: { + authenticationType: "PASSWORD", + officeName: "string" //Optional + } + + ``` + + * **USER_PASSWORD_CHANGED** - user password has been changed + + * **USER_PASSWORD_RESET** - user password has been reset + + * **USER_ROLE_CHANGED** - user role has been changed, + + Additional context represents previous and current role of the user: + + ```json + + context: { + currentRole: "RESTRICTED", + previousRole: "STANDARD" + } + + ``` + + * **USER_API_KEY_RENEWED** - user api-key has been renewed + + * **CREDENTIALS_CREATED** - api-key or OAuth credentials has been + renewed + + * **CREDENTIALS_CHANGED** - api-key or OAuth credentials has been + modified + + * **CREDENTIALS_REVOKED** - api-key or OAuth credentials has been + modified + + Additional context represents credential type: + + ```json + + context: { + credentialType: "string" + } + + ``` + + * **SEARCH** - user performed search + + For entityType CANDIDATE additional context represents candidate search + event: + + ```json + + context: { + keyword: [ + "test" + ], + jobTitles: [ + "Freelancer", + "Software Engineer" + ], + jobNames: [ + "Java Developer, San Francisco" + ], + companies: [ + "SmartRecruiters" + ], + schools: [ + "University of Science and Technology" + ] + ``` + + * **JOB_DELETED** - job was deleted + + Additional context represents the deleted job: + + ```json + + context: { + jobName: "string", + jobRefNumber: "string" + } + + ``` + + * **HIRING_TEAM_MEMBER_ADDED** - a new member was added to the hiring + team of the job + + Additional context represents the new member: + + ```json + + context: { + userId: "string", + roleId: "string", + roleName: "string" + } + + ``` + + * **HIRING_TEAM_MEMBER_REMOVED** - a member was removed from the hiring + team of the job + + Additional context represents the removed member: + + ```json + + context: { + userId: "string" + } + + ``` + + * **HIRING_TEAM_ROLE_UPDATED** - role of one of the hiring team members + was updated + + Additional context represents previous and current role of the updated + member: + + ```json + + context: { + userId: "string", + previousRoleId: "string", + previousRoleName: "string", + currentRoleId: "string", + currentRoleName: "string" + } + + ``` + + * **APPROVAL_DELEGATION_FROM_USER_CREATED** - a user created an approval + delegation + + * **APPROVAL_DELEGATION_FROM_USER_CANCELLED** - a user cancelled an + approval delegation + + * **APPROVAL_DELEGATION_TO_USER_CREATED** - an approval delegation to a + user (a delegate) has been created + + * **APPROVAL_DELEGATION_TO_USER_CANCELLED** - an approval delegation to + a user (a delegate) has been created + + Additional context represents approval delegation event's details: + + ```json + + context: { + originalApproverId: "string", + delegateApproverId: "string", + startDate: date, + endDate: date + } + + ``` + + * **JOB_APPROVAL_REQUESTED** - a job approval was requested + + Additional context represents approval modified event's details: + + ```json + + comment: { + text: 'string', + authorId: 'string', + date: 'string', + + } + + context: { + comments: [comment] + } + + ``` + + * **JOB_APPROVAL_APPROVED** - a job approval was approved + + Additional context represents approval modified event's details: + + ```json + + comment: { + text: 'string', + authorId: 'string', + date: 'string', + + } + + context: { + comments: [comment] + } + + ``` + + * **JOB_APPROVAL_REJECTED** - a job approval was rejected + + Additional context represents approval modified event's details: + + ```json + + comment: { + text: 'string', + authorId: 'string', + date: 'string', + + } + + context: { + comments: [comment] + } + + ``` + + * **JOB_APPROVAL_ABANDONED** - a job approval was abandoned + + Additional context represents approval modified event's details: + + ```json + + comment: { + text: 'string', + authorId: 'string', + date: 'string', + + } + + context: { + comments: [comment] + } + + ``` + + * **OFFER_APPROVAL_APPROVED** - an offer approval was approved + + * **OFFER_APPROVAL_REJECTED** - an offer approval was rejected + + * **OFFER_APPROVAL_ABANDONED** - an offer approval was abandoned + + Additional context represents approval event's details. + `type` is one of the values: + * sequential - consent of every approver is required, approval requests are sent one by one in a defined order. + * parallel - all approvers can approve at the same time. + + `decisionMode` is one of the values: + * all - consent of every approver is required + * any - consent of a single approver is enough + + ```json + + decision: { + decidedOn: integer, + decision: 'string', + decidedBy: 'string', + userId: 'string' + } + + context: { + approvalRequestId: 'string' + approvers: [decision] + type: 'string', + decisionMode: 'string' + } + + ``` + + * **JOB_APPROVAL_STEP_APPROVED** - a job approval step was approved by + author + + * **JOB_APPROVAL_STEP_REJECTED** - a job approval step was rejected by + author + + Additional context represents approval step modified event's details: + + ```json + + context: { + approver: 'string' + comment: 'string' + } + + ``` + + * **JOB_APPROVAL_STEP_SKIPPED** - an author skipped approver for a job + approval step + + * **OFFER_APPROVAL_STEP_APPROVED** - an offer approval step was approved + by author + + * **OFFER_APPROVAL_STEP_REJECTED** - an offer approval step was rejected + by author + + * **OFFER_APPROVAL_STEP_SKIPPED** - an author skipped approver for an + offer approval step + + Additional context represents approval step modified event's details: + + ```json + + context: { + approvalRequestId: "string" + approver: "string", + reasonId: "string", + comment: "string" + } + + ``` + + * **JOB_APPROVAL_STEP_DELEGATED** - job approval step was delegated to + new approver + + * **OFFER_APPROVAL_STEP_DELEGATED** - job approval step was delegated to + new approver + + Additional context represents approval step delegated event's details: + + ```json + + context: { + approvalRequestId: "string" + originalApproverId: "string", + delegateApproverId: "string" + } + + ``` + + * **OFFER_ACCEPTED** - offer was accepted. Returns viaIntegration which + is set to true if offer was accepted via third party integration like + Docusign + + ```json + + context: { + viaIntegration: "boolean" + } + + ``` + + * **OFFER_DECLINED** - offer was declined. Returns viaIntegration which + is set to true if offer was accepted via third party integration like + Docusign + + ```json + + context: { + viaIntegration: "boolean" + } + + ``` + + * **CANDIDATE_PERSONAL_DATA_MODIFIED** - Candidate personal data were + modified. Only Web Application actions are audited. Event doesn't cover + Customer API. Personal data covers: + * First Name + * Last Name + * E-mail + * Phone + * Location + * Phone Number + * Social Links (Skype Id, Indeed Id, Twitter account, LinkedIn profile, Facebook profile, Websites) + * **CANDIDATE_PROFILE_MODIFIED** - Candidate profile data were modified. + Only Web Application actions are audited. Event doesn't cover Customer + API and Mobile application. + + * **CANDIDATE_DELETED** - Candidate was deleted. The authorType property + can be used to distinguish deletion nature. Following values are + possible: + * USER - candidate was deleted by user + * SYSTEM - candidate was deleted by compliance mechanism (due to retention period end or lack of consent) + * CANDIDATE - candidate deleted oneself + + * **CANDIDATE_PROFILE_OPENED** - Candidate profile was opened by user. + Only Web Application actions are audited. Event doesn't cover Customer + API and Mobile application. + + * **CANDIDATE_EEO_FILLED** - Missing Candidate EEO informations were + filled by user. + + * **CANDIDATE_PROFILE_UPDATED_DUE_TO_MERGE** - candidate profile updated + due to merge. + + Additional context with id of duplicated candidate profile: + + ```json + + context: { + mergedProfileId: "string" + } + + ``` + + * **CANDIDATE_DELETED_DUE_TO_MERGE** - candidate profile deleted due to + merge. + + Additional context with id of master candidate profile: + + ```json + + context: { + masterProfileId: "string" + } + + ``` + + * **CANDIDATE_TAGS_MODIFIED** - candidate tags have been modified. It + means that tags have been added, replaced or deleted from the profile. + + The additional context contains the `tags` that are assigned to the candidate after the successful operation. + + ```json + + context: { + tags: "string" + } + + ``` + + * **APPLICATION_PROPERTIES_UPDATED** - application properties updated. + + Additional context with id of updated properties: + + ```json + + context: { + updatedPropertiesIds: "string", + updatedPropertiesKeys: "string" + } + + ``` + + * **APPLICATION_SOURCE_MODIFIED** - community or job application source + has been changed. + + The additional context contains the old and new source identifier after the successful operation. + + ```json + + context: { + previousSource: "string", + nextSource: "string" + } + + ``` + + * **ONBOARDING_STATUS_UPDATED** - onboarding status updated. + + Additional context with ids of values: + + ```json + + context: { + fromValueId: "string", + toValueId: "string" + } + + ``` + + * **JOB_APPLICATION_CREATED** - job application created. Currently, we + are auditing only actions undertaken by an employee. + + Additional context with ids of values: + + ```json + + context: { + currentStatus: "string" + } + + ``` + + * **JOB_APPLICATION_STATE_MODIFIED** - job application state modified. + Currently, we are auditing only actions undertaken by an employee or + system user. + + Additional context with ids of values: + + ```json + + context: { + currentStatus: "string", + currentStep: "string", //optional, might not be returned if lack of configured step + previousStatus: "string", + previousStep: "string" //optional, might not be returned if lack of configured step + } + + ``` + + * **LRSC_CONSENT_GIVEN** - Consent for data exchange within LinkedIn + Recruiter System Connect integration was given. + + * **OAUTH_APPLICATION_ACCESS_GRANTED** - Access to OAuth application was + granted to given user. + + Additional context represents grant's details: + + ```json + + context: { + applicationId: "string", + applicationName: "string", + startDate: "date-time", + endDate: "date-time" + } + + ``` + + JOB_PROPERTY_* events audit changes from both Web Application on Job + Field Settings page and Configuration API unless otherwise indicated. + + * **JOB_PROPERTY_CREATED** - a job property was created. + + * **JOB_PROPERTY_ACTIVATED** - a job property was activated. + + * **JOB_PROPERTY_DEACTIVATED** - a job property was deactivated. + + * **JOB_PROPERTY_UPDATED** - a job property was updated. + + Additional context represents current and previous job property: + + ```json + + property: { + id: "string", + label: "string", + category: "string", + active: boolean, + visible: boolean, + required: boolean + } + + context: { + currentProperty: property, + previousProperty: property + } + + ``` + + * **JOB_PROPERTY_UPDATED_VALUES** - values in job property were updated. + Only actions from UI are audited within this event. + + Additional context represents updated current and previous values: + + ```json + + value: { + id: "string", + label: "string", + archived: boolean + } + + context: { + currentValues: [value], + previousValues: [value] + } + + ``` + + * **JOB_PROPERTY_UPDATED_VALUE** - a job property value was updated + (changed label, (un)archived). Only actions from Configuration API are + audited. These actions from UI are audited within + JOB_PROPERTY_UPDATED_VALUES event. + + Additional context represents updated current and previous value: + + ```json + + context: { + currentValue: value, + previousValue: value + } + + ``` + + * **JOB_PROPERTY_ADDED_VALUE** - a value was added to a job property. + Only actions from Configuration API are audited. These actions from UI + are audited within JOB_PROPERTY_UPDATED_VALUES event. + + Additional context represents added value: + + ```json + context: { + value: [value] + } + ``` + + * **JOB_PROPERTY_ARCHIVED_VALUE** - a job property value was archived. + Only actions from Configuration API are audited. These actions from UI + are audited within JOB_PROPERTY_UPDATED_VALUES event. + + Additional context represents archived value id: + + ```json + + context: { + valueId: "string" + } + + ``` + + * **JOB_PROPERTY_DEPENDENT_PROPERTIES_UPDATED** - job property + dependents were updated. + + Additional context represents updated dependent properties: + + ```json + + context: { + currentDependents: ["string"], + previousDependents: ["string"] + } + + ``` + + * **JOB_PROPERTY_DEPENDENT_VALUES_UPDATED** - job property dependent + values were updated. + + Additional context represents added or updated dependent values: + + ```json + + dependentValue: { + "parent": { + "id": "string", + "label": "string" + }, + "values": [value], + "valuesIds": ["string"] + } + + + context: { + dependentId: "string", + currentDependentValues: [dependentValue], + previousDependentValues: [dependentValue] + } + + ``` + + * **JOB_PROPERTIES_CHANGED** - job details has changed (job fields + edited on job) + + ```json + + fieldValue: { + "fieldId": "string", + "value": "string" + } + + context: { + "previousProperties": [fieldValue], + "currentProperties": [fieldValue] + } + + ``` + + * **POSITION_UPDATED** - when position is updated + + * **POSITION_DELETED** - when position is deleted + + * **POSITION_CREATED** - when position is created + + * **POSITION_ASSIGNED** - when position is assigned + + * **CANCEL_NOT_FILLED_POSITION** - when not filled position is cancelled + + ```json + + position: { + id: 'string', + positionId: 'string', + status: 'string', + openDate: 'date', + targetStartDate: 'date', + type: 'string' + } + + context: { + previous: position, + current: position + } + + ``` + + * **JOB_AD_CREATED** - when job ad is created + + ```json + + location: { + country: 'string' + countryCode: 'string' + regionCode: 'string' + region: 'string' + city: 'string' + address: 'string' + postalCode: 'string' + longitude: 'string' + latitude: 'string' + manual: boolean + } + + jobAd: { + id: 'string', + title: 'string', + visibility: 'string', + creatorId: 'string', + modifierId: 'string', + createDate: 'string', + location: location, + sections: 'string', + languageId: 'string', + applyUrl: 'string' + } + + context: { + jobAd: jobAd + } + + ``` + + * **JOB_AD_UPDATED** - when job ad is updated + + ```json + + context: { + previous: jobAd, + current: jobAd + } + + ``` + + * **JOB_AD_DELETED** - when job ad is deleted + + ```json + + context: { + jobAdId: 'string', + employeeId: 'string' + } + + ``` + + * **ONBOARDING_PROCESS_DELETED** - when an Onboarding Process is deleted + from SmartOnboard + + ```json + + context: { + deletionReason: 'string' + } + + ``` + + * **CUSTOMER_REPORT_DOWNLOADED** - when a report is downloaded + Additional context with ids of values: + + ```json + + context: { + reportFileId: 'string', + reportId: 'string' + } ``` + tags: + - audit + summary: List audit events + operationId: audit.get + security: + - key: [] + - oauth: + - audit_events_read + parameters: + - in: query + description: >- + ISO8601-formatted time boundaries for the event time, Format: + yyyy-MM-ddTHH:mm:ss.SSSZZ (example: 2023-01-21T12:50:02.594Z) + name: eventDateAfter + schema: + type: string + format: date-time + - in: query + description: >- + ISO8601-formatted time boundaries for the event time, Format: + yyyy-MM-ddTHH:mm:ss.SSSZZ (example: 2023-01-21T12:50:02.594Z) + name: eventDateBefore + schema: + type: string + format: date-time + - in: query + description: Name of the event + name: eventName + explode: true + schema: + type: array + items: + type: string + enum: + - USER_ACCOUNT_ACTIVATED + - USER_ACCOUNT_CREATED + - USER_ACCOUNT_DEACTIVATED + - USER_ACCOUNT_UPDATED + - USER_AUTHENTICATION_INVALID_CREDENTIALS + - USER_AUTHENTICATION_SUCCESS + - USER_PASSWORD_CHANGED + - USER_PASSWORD_RESET + - USER_ROLE_CHANGED + - USER_API_KEY_RENEWED + - CREDENTIALS_CREATED + - CREDENTIALS_CHANGED + - CREDENTIALS_REVOKED + - SEARCH + - CANDIDATE_PERSONAL_DATA_MODIFIED + - CANDIDATE_PROFILE_MODIFIED + - CANDIDATE_DELETED + - CANDIDATE_PROFILE_OPENED + - CANDIDATE_PROFILE_UPDATED_DUE_TO_MERGE + - CANDIDATE_DELETED_DUE_TO_MERGE + - CANDIDATE_TAGS_MODIFIED + - APPLICATION_PROPERTIES_UPDATED + - APPLICATION_SOURCE_MODIFIED + - ONBOARDING_STATUS_UPDATED + - JOB_APPLICATION_CREATED + - JOB_APPLICATION_STATE_MODIFIED + - JOB_DELETED + - HIRING_TEAM_MEMBER_ADDED + - HIRING_TEAM_MEMBER_REMOVED + - HIRING_TEAM_ROLE_UPDATED + - APPROVAL_DELEGATION_FROM_USER_CREATED + - APPROVAL_DELEGATION_FROM_USER_CANCELLED + - APPROVAL_DELEGATION_TO_USER_CREATED + - APPROVAL_DELEGATION_TO_USER_CANCELLED + - JOB_APPROVAL_REQUESTED + - JOB_APPROVAL_APPROVED + - JOB_APPROVAL_REJECTED + - JOB_APPROVAL_ABANDONED + - JOB_APPROVAL_STEP_APPROVED + - JOB_APPROVAL_STEP_REJECTED + - JOB_APPROVAL_STEP_SKIPPED + - JOB_APPROVAL_STEP_DELEGATED + - OFFER_APPROVAL_APPROVED + - OFFER_APPROVAL_REJECTED + - OFFER_APPROVAL_ABANDONED + - OFFER_APPROVAL_STEP_APPROVED + - OFFER_APPROVAL_STEP_REJECTED + - OFFER_APPROVAL_STEP_SKIPPED + - OFFER_APPROVAL_STEP_DELEGATED + - OFFER_ACCEPTED + - OFFER_DECLINED + - CANDIDATE_EEO_FILLED + - LRSC_CONSENT_GIVEN + - OAUTH_APPLICATION_ACCESS_GRANTED + - JOB_PROPERTY_CREATED + - JOB_PROPERTY_UPDATED + - JOB_PROPERTY_ACTIVATED + - JOB_PROPERTY_DEACTIVATED + - JOB_PROPERTY_UPDATED_VALUES + - JOB_PROPERTY_UPDATED_VALUE + - JOB_PROPERTY_ADDED_VALUE + - JOB_PROPERTY_ARCHIVED_VALUE + - JOB_PROPERTY_DEPENDENT_PROPERTIES_UPDATED + - JOB_PROPERTY_DEPENDENT_VALUES_UPDATED + - JOB_PROPERTIES_CHANGED + - POSITION_UPDATED + - POSITION_DELETED + - POSITION_CREATED + - POSITION_ASSIGNED + - CANCEL_NOT_FILLED_POSITION + - JOB_AD_CREATED + - JOB_AD_UPDATED + - JOB_AD_DELETED + - ONBOARDING_PROCESS_DELETED + - CUSTOMER_REPORT_DOWNLOADED + default: + - USER_ACCOUNT_ACTIVATED + - USER_ACCOUNT_CREATED + - USER_ACCOUNT_DEACTIVATED + - USER_ACCOUNT_UPDATED + - USER_AUTHENTICATION_INVALID_CREDENTIALS + - USER_AUTHENTICATION_SUCCESS + - USER_PASSWORD_CHANGED + - USER_PASSWORD_RESET + - USER_ROLE_CHANGED + - USER_API_KEY_RENEWED + - CREDENTIALS_CREATED + - CREDENTIALS_CHANGED + - CREDENTIALS_REVOKED + - SEARCH + - JOB_DELETED + - HIRING_TEAM_MEMBER_ADDED + - HIRING_TEAM_MEMBER_REMOVED + - HIRING_TEAM_ROLE_UPDATED + - APPROVAL_DELEGATION_FROM_USER_CREATED + - APPROVAL_DELEGATION_FROM_USER_CANCELLED + - APPROVAL_DELEGATION_TO_USER_CREATED + - APPROVAL_DELEGATION_TO_USER_CANCELLED + - JOB_APPROVAL_REQUESTED + - JOB_APPROVAL_APPROVED + - JOB_APPROVAL_REJECTED + - JOB_APPROVAL_ABANDONED + - JOB_APPROVAL_STEP_APPROVED + - JOB_APPROVAL_STEP_REJECTED + - JOB_APPROVAL_STEP_SKIPPED + - JOB_APPROVAL_STEP_DELEGATED + - OFFER_APPROVAL_APPROVED + - OFFER_APPROVAL_REJECTED + - OFFER_APPROVAL_ABANDONED + - OFFER_APPROVAL_STEP_APPROVED + - OFFER_APPROVAL_STEP_REJECTED + - OFFER_APPROVAL_STEP_SKIPPED + - OFFER_APPROVAL_STEP_DELEGATED + - OFFER_ACCEPTED + - OFFER_DECLINED + - CANDIDATE_PERSONAL_DATA_MODIFIED + - CANDIDATE_PROFILE_MODIFIED + - CANDIDATE_DELETED + - CANDIDATE_PROFILE_OPENED + - CANDIDATE_EEO_FILLED + - CANDIDATE_PROFILE_UPDATED_DUE_TO_MERGE + - CANDIDATE_DELETED_DUE_TO_MERGE + - CANDIDATE_TAGS_MODIFIED + - APPLICATION_PROPERTIES_UPDATED + - APPLICATION_SOURCE_MODIFIED + - ONBOARDING_STATUS_UPDATED + - JOB_APPLICATION_CREATED + - JOB_APPLICATION_STATE_MODIFIED + - LRSC_CONSENT_GIVEN + - OAUTH_APPLICATION_ACCESS_GRANTED + - JOB_PROPERTY_CREATED + - JOB_PROPERTY_UPDATED + - JOB_PROPERTY_ACTIVATED + - JOB_PROPERTY_DEACTIVATED + - JOB_PROPERTY_UPDATED_VALUES + - JOB_PROPERTY_UPDATED_VALUE + - JOB_PROPERTY_ADDED_VALUE + - JOB_PROPERTY_ARCHIVED_VALUE + - JOB_PROPERTY_DEPENDENT_PROPERTIES_UPDATED + - JOB_PROPERTY_DEPENDENT_VALUES_UPDATED + - JOB_PROPERTIES_CHANGED + - POSITION_UPDATED + - POSITION_DELETED + - POSITION_CREATED + - POSITION_ASSIGNED + - CANCEL_NOT_FILLED_POSITION + - JOB_AD_CREATED + - JOB_AD_UPDATED + - JOB_AD_DELETED + - ONBOARDING_PROCESS_DELETED + - CUSTOMER_REPORT_DOWNLOADED + - in: query + description: Type of the author who generated the event + name: authorType + explode: true + schema: + type: array + items: + type: string + enum: + - USER + - SUPPORT_USER + - SYSTEM + - CANDIDATE + default: + - USER + - SUPPORT_USER + - SYSTEM + - CANDIDATE + - in: query + description: Unique identifier of the author + name: authorId + schema: + type: string + - in: query + description: Type of the entity that the event is related to + name: entityType + explode: true + schema: + type: array + items: + type: string + enum: + - USER + - CANDIDATE + - APPLICATION + - OFFER + - JOB + - COMPANY + - JOB_PROPERTY + - JOB_AD + - CREDENTIAL + - REPORT_FILE + - ONBOARDING_PROCESS + default: + - USER + - CANDIDATE + - APPLICATION + - OFFER + - JOB + - COMPANY + - JOB_PROPERTY + - JOB_AD + - CREDENTIAL + - REPORT_FILE + - ONBOARDING_PROCESS + - in: query + description: Unique identifier of the entity that the event is related to + name: entityId + schema: + type: string + - in: query + description: Unique identifier for the next page of events + name: nextPageId + schema: + type: string + - in: query + description: Number of audit events to return. Maximum value is 100. + name: limit + schema: + type: integer + minimum: 1 + maximum: 100 + default: 10 + /candidates/{id}/tags: + parameters: + - $ref: '#/components/parameters/candidateId' + post: + responses: + '201': + description: Added tags + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateTags' + '400': + description: Adding too many tags + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: No permission to access this candidate + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Add new tags to a given candidate. It doesn't replace existing tags. + tags: + - candidates + summary: Add tags to a candidate + operationId: candidates.tags.add + security: + - key: [] + - oauth: + - candidates_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateTags' + description: Tags to be added. + required: true + get: + responses: + '200': + description: Candidate's tags + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateTags' + '403': + description: No permission to access this candidate + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - candidates + summary: Get tags for a candidate + operationId: candidates.tags.get + security: + - key: [] + - oauth: + - candidates_read + put: + responses: + '201': + description: Updated tags + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateTags' + '403': + description: No permission to access this candidate + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Update tags for a given candidate. It replaces all existing tags with + the new array provided. + tags: + - candidates + summary: Update tags for a candidate + operationId: candidates.tags.replace + security: + - key: [] + - oauth: + - candidates_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateTags' + description: Tags to be set. + required: true + delete: + responses: + '204': + description: Candidate's tags successfully deleted + '403': + description: No permission to access this candidate + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Delete tags for a given candidate. All tags associated with a candidate + are removed. + tags: + - candidates + summary: Delete tags for a candidate + operationId: candidates.tags.delete + security: + - key: [] + - oauth: + - candidates_manage + /candidates/{id}/onboardingStatus: + parameters: + - $ref: '#/components/parameters/candidateId' + get: + deprecated: true + responses: + '200': + description: Onboarding status + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardingStatus' + '403': + description: > + with codes: + + * **NO_ACCESS_TO_CANDIDATE** when Onboarding Status is not accesible + with assigned permissions. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **CANDIDATE_NOT_FOUND** when candidate not found, + + * **ONBOARDING_STATUS_NOT_ACTIVE** when Onboarding Status candidate + property is not activated, + + * **CANDIDATE_FIELDS_FEATURE_MISSING** when Onboarding Status is not + accessible. Required feature: 'Candidate Fields'. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Get Onboarding Status for a candidate. Please use `GET + /candidates/{id}/jobs/{jobId}/onboardingStatus` instead. + tags: + - candidates + summary: Get Onboarding Status for a candidate + operationId: candidates.onboarding.get + security: + - key: [] + - oauth: + - candidates_read + put: + deprecated: true + responses: + '204': + description: Onboarding status successfully updated. + '403': + description: > + with codes: + + * **NO_ACCESS_TO_CANDIDATE** when Onboarding Status is not editable + with assigned permissions. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **CANDIDATE_NOT_FOUND** when candidate not found, + + * **ONBOARDING_STATUS_NOT_ACTIVE** when Onboarding Status custom + candidate property is not activated, + + * **CANDIDATE_FIELDS_FEATURE_MISSING** when Onboarding Status is not + accessible. Required feature: 'Candidate Fields'. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Set Onboarding Status for a candidate. Please use `PUT + /candidates/{id}/jobs/{jobId}/onboardingStatus` instead. + tags: + - candidates + summary: Set Onboarding Status for a candidate + operationId: candidates.onboarding.update + security: + - key: [] + - oauth: + - candidates_manage + requestBody: + $ref: '#/components/requestBodies/OnboardingStatus' + /candidates/{id}/jobs/{jobId}/onboardingStatus: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + get: + responses: + '200': + description: Onboarding status. + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardingStatus' + '403': + description: > + with codes: + + * **NO_ACCESS_TO_CANDIDATE** when Onboarding Status is not + accessible with assigned permissions. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **CANDIDATE_NOT_FOUND** when candidate not found, + + * **JOB_NOT_FOUND** when candidate is not assigned to given job, + + * **ONBOARDING_STATUS_NOT_ACTIVE** when Onboarding Status candidate + property is not activated, + + * **CANDIDATE_FIELDS_FEATURE_MISSING** when Onboarding Status is not + accessible. Required feature: 'Candidate Fields'. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get Onboarding Status for a candidate associated with given job. + tags: + - candidates + summary: Get Onboarding Status for a candidate associated with given job + operationId: candidates.onboarding.getForJob + security: + - key: [] + - oauth: + - candidates_read + put: + responses: + '204': + description: Onboarding status successfully updated. + '403': + description: > + with codes: + + * **NO_ACCESS_TO_CANDIDATE** when Onboarding Status is not editable + with assigned permissions. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **CANDIDATE_NOT_FOUND** when candidate not found, + + * **JOB_NOT_FOUND** when candidate is not assigned to given job, + + * **ONBOARDING_STATUS_NOT_ACTIVE** when Onboarding Status candidate + property is not activated, + + * **CANDIDATE_FIELDS_FEATURE_MISSING** when Onboarding Status is not + accessible. Required feature: 'Candidate Fields'. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Sets Onboarding Status for a candidate associated with given job. + tags: + - candidates + summary: Sets Onboarding Status for a candidate associated with given job + operationId: candidates.onboarding.updateForJob + security: + - key: [] + - oauth: + - candidates_manage + requestBody: + $ref: '#/components/requestBodies/OnboardingStatus' + /candidates: + get: + responses: + '200': + description: Candidates matching search criteria + content: + application/json: + schema: + $ref: '#/components/schemas/Candidates' + headers: + Link: + schema: + type: string + description: > + Links to related resources, in the format defined by + + [RFC 5988](https://tools.ietf.org/html/rfc5988#section-5). + + This will include a link with relation type `next` to the + + next page (containing `pageId` query parameter), if there is a + next page. + '400': + description: > + with codes + + * **FIELDS_CRITERIA_SIZE_VIOLATED** when number of elements of query + param `propertyId` is not + equal to number of elements of query param `propertyValueId` + * **SOURCES_CRITERIA_SIZE_VIOLATED** when number of elements of + query param `sourceType` is not + equal to number of elements of query param `sourceSubType` or not + equal to number of elements of query param `sourceValueId` + * **SCREENING_QUESTIONS_CRITERIA_SIZE_VIOLATED** when number of + elements of query param `questionCategory` is not + equal to number of elements of query param `questionFieldId` or not + equal to number of elements of query param `questionFieldValueId` + * **ONBOARDING_STATUS_NOT_ACTIVE** when Onboarding Status candidate + property is not activated or user's + company does not have candidate property feature, but user has requested to search candidates by + onboardingStatus query parameter + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Only candidates matching all specified criteria and having at least one + job application are returned. + tags: + - candidates + summary: Search candidates + operationId: candidates.all + security: + - key: [] + - oauth: + - candidates_read + parameters: + - in: query + description: >- + keyword search, for more infromation see [SmartRecruiters + HelpCenter](https://help.smartrecruiters.com/Getting_Started/Platform/Searching_candidates_via_Candidate_API) + name: q + schema: + type: string + - in: query + description: number of elements to return. max value is 100 + name: limit + schema: + type: integer + minimum: 1 + maximum: 100 + default: 10 + - in: query + description: > + page identifier of elements to return + + + The `pageId` param can be used to fetch multiple page response, in + case + + the number of results is higher than max number of elements to + return (specified in the `limit` parameter). + + The `pageId` should not be present when requesting the first page of + results. + + The pageId of the following page is returned either in the + `nextPageId` property, or is available + + in the HTTP header `Link` value of relation type `next`. + + Example of the `Link` header: + + ``` + + ; + rel="next" + + ``` + name: pageId + schema: + type: string + - in: query + description: >- + job filter to display candidates who applied for a job [id]; can be + used repeatedly; + name: jobId + explode: true + schema: + type: array + items: + type: string + - in: query + description: >- + location keyword search which looks up a string in a candidate’s + location data; can be used repeatedly; case insensitive; e.g. Krakow + name: location + explode: true + schema: + type: array + items: + type: string + - in: query + description: >- + average rating filter to display candidates with a specific average + rating (integer); can be used repeatedly; e.g. 4 + name: averageRating + deprecated: true + explode: true + schema: + type: array + items: + type: integer + maximum: 5 + minimum: 1 + - in: query + description: >- + candidate’s status filter in a context of a job; can be used + repeatedly + name: status + explode: true + schema: + type: array + items: + type: string + enum: + - LEAD + - NEW + - IN_REVIEW + - INTERVIEW + - OFFERED + - HIRED + - REJECTED + - WITHDRAWN + - TRANSFERRED + - in: query + description: candidate’s consent status filter; can be used repeatedly + name: consentStatus + explode: true + schema: + type: array + items: + $ref: '#/components/schemas/ConsentStatus' + - in: query + description: >- + candidate’s sub-status filter in a context of a job. Works only in a + correlation with a set value for the "status" field. + name: subStatus + schema: + type: string + - in: query + description: >- + tag assigned to a candidate; can be used repeatedly; case + insensitive; e.g. fluent english + name: tag + explode: true + schema: + type: array + items: + type: string + - in: query + description: >- + ISO8601-formatted time boundaries for the candidate update time, + Format: yyyy-MM-ddTHH:mm:ss.SSSZZ + name: updatedAfter + schema: + type: string + format: date-time + - in: query + description: candidate's onboarding status + name: onboardingStatus + schema: + type: string + enum: + - READY_TO_ONBOARD + - ONBOARDING_SUCCESSFUL + - ONBOARDING_FAILED + - in: query + description: >- + candidate's property id (1-N). Currently it is only possible to + filter by single-select application fields. Other application field + type filtering is not possible. + name: propertyId + explode: true + schema: + type: array + items: + type: string + default: [] + - in: query + description: candidate's property value id (1-N) + name: propertyValueId + explode: true + schema: + type: array + items: + type: string + default: [] + - in: query + description: candidate's source type (1-N) + name: sourceType + explode: true + schema: + type: array + items: + type: string + default: [] + - in: query + description: candidate's source subtype (1-N) + name: sourceSubType + explode: true + schema: + type: array + items: + type: string + default: [] + - in: query + description: candidate's source value id (1-N) + name: sourceValueId + explode: true + schema: + type: array + items: + type: string + default: [] + - in: query + description: screening question category (1-N) + name: questionCategory + explode: true + schema: + type: array + items: + type: string + default: [] + - in: query + description: screening question field id (1-N) + name: questionFieldId + explode: true + schema: + type: array + items: + type: string + default: [] + - in: query + description: screening question field value id (1-N) + name: questionFieldValueId + explode: true + schema: + type: array + items: + type: string + default: [] + post: + responses: + '201': + description: Created candidate. + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateDetails' + '400': + description: > + with codes + + * **SOURCE_NOT_FOUND** when provided source does not exist, + + * **SUBTYPE_REQUIRED** when there are more sources and subtype + parameter is required + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + with code **PERMISSION_DENIED** when you are not permitted to create + candidate + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with code **SOURCE_TYPE_NOT_FOUND** when provided source type does + not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Create a new candidate and assign to a Talent Pool. + + + **Tracking candidate source** + + + When adding a new candidate, it's very important you track its source + appropriately. In order to associate a source with your app/integration, + add below object to a candidate body object for this endpoint: + + ``` + + { + "sourceDetails": { + "sourceTypeId": "string", + "sourceSubTypeId": "string", + "sourceId": "string" + } + } + + ``` + + **sourceTypeId** - it's a Source Type - available values can be found + using [get + /configuration/sources](https://developers.smartrecruiters.com/reference/configurationsourcetypes-1) + endpoint + + + **sourceSubTypeId** - it's a Source Subtype, an optional parameter - + available values can be found using [get + /configuration/sources](https://developers.smartrecruiters.com/reference/configurationsourcetypes-1) + endpoint + + + **sourceId** - it's a Source Id - available values for a given + sourceTypeId can be found using [get + /configuration/sources/:sourceTypeId/values](https://developers.smartrecruiters.com/reference/configurationsourcevaluesall-1) + endpoint + + + NOTE: Not defining the source will default to **API** source. + + + NOTE II: In case you can't find an appropriate source to track against + you can: + + * Create a custom source for each customer account separately on [this + admin + page](https://www.smartrecruiters.com/settings/configuration/custom-sources) + (you need to be logged in as an admin to the customer account in order + to view this page) + + * Request to + [partners@smartrecruiters.com](mailto:partners@smartrecruiters.com) + adding a standard source that will be available for all customers if + your app/integration is productised (available to all SmartRecruiters + customers) + tags: + - candidates + summary: Create a new candidate and assign to a Talent Pool + operationId: candidates.add + security: + - key: [] + - oauth: + - candidates_create + requestBody: + $ref: '#/components/requestBodies/CandidateInput' + /candidates/cv: + post: + responses: + '201': + description: Created candidate. + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateDetails' + '400': + description: > + with codes + + * **SOURCE_NOT_FOUND** when provided source does not exist, + + * **SUBTYPE_REQUIRED** when there are more sources and subtype + parameter is required, + + * **UNPARSABLE_RESUME** when provided resume cannot be parsed, e.g. + an image + + * **INCOMPLETE_RESUME** when provided resume does not contain all + required information to create a candidate. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + with code **PERMISSION_DENIED** when you are not permitted to create + candidate + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + **SOURCE_TYPE_NOT_FOUND** when provided source type does not exist. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Parse a resume, create a candidate and assign to a Talent Pool. + tags: + - candidates + summary: Parse a resume, create a candidate and assign to a Talent Pool. + operationId: candidates.resume.add + security: + - key: [] + - oauth: + - candidates_create + requestBody: + $ref: '#/components/requestBodies/Resume' + /candidates/consent-requests: + post: + responses: + '201': + description: > + Consent requests has been scheduled. + + + The response contains a list of results for each individual consent + request in the same order as in the request. + + + A single result `status` property value could be: + + * 202 - consent request successfully scheduled, + + * 403 - cannot request consent from candidate as no privacy policy + has been configured. + content: + application/json: + schema: + $ref: '#/components/schemas/ConsentRequestsResults' + description: > + Read more about GDPR tools on [SmartRecruiters + HelpCenter](https://help.smartrecruiters.com/GDPR/GDPR_Tools_for_Companies) + tags: + - candidates + summary: Request consent from multiple candidates + operationId: candidates.consent.request.batch + security: + - key: [] + - oauth: + - candidates_manage + requestBody: + required: true + $ref: '#/components/requestBodies/BatchConsentRequest' + /candidates/{id}/consent: + parameters: + - $ref: '#/components/parameters/candidateId' + get: + responses: + '200': + description: Candidate's latest consent status + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateConsentStatus' + '403': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get candidate consent status + tags: + - candidates + summary: Status of candidate consent + operationId: candidates.consent.status + security: + - key: [] + - oauth: + - candidates_read + /candidates/{id}/consents: + parameters: + - $ref: '#/components/parameters/candidateId' + get: + responses: + '200': + description: Candidate's consent decisions + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateConsentDecisions' + '403': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Depending on the consent approach which a customer chooses, the response + will either contain one candidates' + + consent decision - known as "single consent" - or contain one + candidates' consent broken out by the data scopes + + which the customer has subscribed to - such as SmartRecruit and + SmartCRM. This is referred to as "separated consent". + + Provided there is at least one pending consent request (without a + decision) for a candidate, the response + + contains a date and time of the most recent of such consent requests. + + + Read more about GDPR tools on [SmartRecruiters + HelpCenter](https://help.smartrecruiters.com/GDPR/GDPR_Tools_for_Companies) + tags: + - candidates + summary: Candidate consent decisions + operationId: candidates.consent.decisions + security: + - key: [] + - oauth: + - candidates_read + /candidates/{id}: + parameters: + - $ref: '#/components/parameters/candidateId' + get: + responses: + '200': + description: Candidate details + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateDetails' + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get details of a candidate + tags: + - candidates + summary: Get details of a candidate + operationId: candidates.get + security: + - key: [] + - oauth: + - candidates_read + delete: + responses: + '204': + description: Candidate successfully deleted + '403': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Candidate not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Delete candidate + tags: + - candidates + summary: Delete Candidate + operationId: candidates.delete + security: + - key: [] + - oauth: + - candidates_manage + patch: + responses: + '200': + description: Candidate updated + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateDetails' + '403': + description: >- + with code **PERMISSION_DENIED** when you are not permitted to update + candidate details + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code: + * **CANDIDATE_NOT_FOUND** when candidate not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Update candidate details + tags: + - candidates + summary: Update candidate personal information + operationId: candidates.update + security: + - key: [] + - oauth: + - candidates_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PersonalDetails' + description: Candidate personal information + /candidates/{id}/attachments: + parameters: + - $ref: '#/components/parameters/candidateId' + get: + deprecated: true + responses: + '200': + description: Candidate's attachments + content: + application/json: + schema: + $ref: '#/components/schemas/Attachments' + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Attachment file access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get list of candidate's attachments. + tags: + - candidates + summary: Get list candidate's attachments. + operationId: candidates.attachments.list + security: + - key: [] + - oauth: + - candidates_read + post: + deprecated: true + responses: + '201': + description: Candidate's attachment + content: + application/json: + schema: + $ref: '#/components/schemas/Attachment' + '400': + description: > + with codes: + + * **FILE_ALREADY_EXIST** when file aleady exists, + + * **INVALID_FILE** when file extension not allowed, corrupted file + or wrong file type. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: >- + with code **ATTACHMENT_LIMIT_EXCEEDED** when no more files can be + added to candidate. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Attach files to a candidate. + tags: + - candidates + summary: Attach files to a candidate. + operationId: candidates.attachments.add + security: + - key: [] + - oauth: + - candidates_create + requestBody: + content: + multipart/form-data: + schema: + type: object + properties: + attachmentType: + description: Type of attachment you want to upload. + type: string + enum: + - GENERIC_FILE + - RESUME + - COVER_LETTER + default: GENERIC_FILE + file: + description: The file to upload. + type: string + format: binary + required: + - attachmentType + /candidates/{id}/attachments/{attachmentId}: + parameters: + - $ref: '#/components/parameters/candidateId' + get: + deprecated: true + responses: + '200': + description: Attachment content + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: with code FILE_NOT_FOUND when file does not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get a candidate's attachment. + tags: + - candidates + summary: Get a candidate's attachment. + operationId: candidates.attachments.get + security: + - key: [] + - oauth: + - candidates_read + parameters: + - in: path + description: Identifier of an attachment + name: attachmentId + required: true + schema: + type: string + /candidates/{id}/jobs/{jobId}/attachments: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + get: + responses: + '200': + description: Candidate's attachments in context of given job. + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateAttachmentsForJob' + '403': + description: >- + with code **PERMISSION_DENIED** when you are not permitted to view + candidate attachments in context of given job. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: >- + with code **JOB_NOT_FOUND** when candidate is not assigned to given + job. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get list of candidate's attachments in context of given job. + tags: + - candidates + summary: Get list of candidate's attachments in context of given job. + operationId: candidates.attachments.listForJob + security: + - key: [] + - oauth: + - candidates_read + post: + responses: + '201': + description: Candidate's attachment in context of given job. + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateAttachmentForJob' + '400': + description: > + with codes: + + * **FILE_ALREADY_EXIST** when file already exists, + + * **INVALID_FILE** when file extension not allowed, corrupted file + or wrong file type. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + with code **PERMISSION_DENIED** when you are not permitted to add + file to candidate in context of given job. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: >- + with code **JOB_NOT_FOUND** when candidate is not assigned to given + job. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: >- + with code **ATTACHMENT_LIMIT_EXCEEDED** when no more files can be + added to candidate in context of given job. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Attach file to candidate in context of given job. + tags: + - candidates + summary: Attach file to candidate in context of given job. + operationId: candidates.attachments.addForJob + security: + - key: [] + - oauth: + - candidates_create + requestBody: + content: + multipart/form-data: + schema: + type: object + properties: + attachmentType: + description: Type of attachment you want to upload. + type: string + enum: + - GENERIC_FILE + - RESUME + - COVER_LETTER + default: GENERIC_FILE + file: + description: File to upload. + type: string + format: binary + required: + - attachmentType + /candidates/attachments/{attachmentId}: + parameters: + - $ref: '#/components/parameters/attachmentId' + get: + responses: + '200': + description: Candidate's Attachment + '403': + description: > + with codes: + + * **PERMISSION_DENIED** when you are not permitted to download + attachment, + + * **MALWARE_DETECTED** when file has been marked as malicious. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: with code **FILE_NOT_FOUND** when attachment does not exist. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get candidate's attachment. + tags: + - candidates + summary: Get candidate's attachment. + operationId: candidates.attachments.getForJob + security: + - key: [] + - oauth: + - candidates_read + delete: + responses: + '204': + description: Attachment successfully deleted + '403': + description: >- + with code **PERMISSION_DENIED** when you are not permitted to delete + attachment. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: with code **FILE_NOT_FOUND** when attachment does not exist. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Delete attachment. + tags: + - candidates + summary: Delete attachment. + operationId: candidates.attachments.deleteForJob + security: + - key: [] + - oauth: + - candidates_manage + /candidates/{id}/jobs/{jobId}/status: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + put: + responses: + '204': + description: '' + '400': + description: > + with codes + + * **NO_REASON_SUPPORT_FOR_STATUS** when reason is not available for + given status (availably only for REJECTED and WITHDRAWN) + + * **REASON_NOT_FOUND** when given reason does not exist + + * **REQUIRED_SUB_STATUS_OMITTED** when there is a required sub + status before the status you want to move a candidate to + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with codes + + * **PERMISSION_DENIED** when you are not permitted to update + candidate's status + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Candidate is not assigned to given job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Update a candidate's status + tags: + - candidates + summary: Update a candidate's status + operationId: candidates.status.update + security: + - key: [] + - oauth: + - candidates_manage + requestBody: + $ref: '#/components/requestBodies/CandidateStatus' + /candidates/{id}/status: + parameters: + - $ref: '#/components/parameters/candidateId' + put: + deprecated: true + responses: + '204': + description: '' + '400': + description: > + with codes + + * **NO_REASON_SUPPORT_FOR_STATUS** when reason is not available for + given status (availably only for REJECTED and WITHDRAWN) + + * **REASON_NOT_FOUND** when given reason does not exist + + * **REQUIRED_SUB_STATUS_OMITTED** when there is a required sub + status before the status you want to move a candidate to + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with codes + + * **PERMISSION_DENIED** when you are not permitted to update + candidate's status + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Update a candidate's status on primary assignment. Please use `PUT + /candidates/{id}/jobs/{jobId}/status` instead. + tags: + - candidates + summary: Update a candidate's status on primary assignment + operationId: candidates.status.updatePrimary + security: + - key: [] + - oauth: + - candidates_manage + requestBody: + $ref: '#/components/requestBodies/CandidateStatus' + /candidates/{id}/status/history: + parameters: + - $ref: '#/components/parameters/candidateId' + get: + deprecated: true + responses: + '200': + description: Candidate's status history + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateStatusHistoryList' + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Get candidate's status history. Please use `GET + /candidates/{id}/jobs/{jobId}/status/history` instead. + tags: + - candidates + summary: Get candidate's status history + operationId: candidates.status.history.get + security: + - key: [] + - oauth: + - candidates_read + - candidate_status_read + /candidates/{id}/jobs/{jobId}/status/history: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + get: + responses: + '200': + description: Candidate's status history + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateStatusHistoryList' + '403': + description: > + with code **NO_ACCESS_TO_CANDIDATE** when not permitted to see this + candidate + + with code **NO_ACCESS_TO_JOB** when not permitted to see this + candidate in context of given job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with code **CANDIDATE_NOT_FOUND** when candidate not found + + with code **JOB_NOT_FOUND** when candidate is not assigned to given + job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get candidate's status history for a candidate's job + tags: + - candidates + summary: Get candidate's status history for a candidate's job + operationId: candidates.status.history.getForJob + security: + - key: [] + - oauth: + - candidates_read + - candidate_status_read + /candidates/{id}/jobs/{jobId}/source: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + put: + responses: + '204': + description: '' + '400': + description: > + with codes: + + * **INVALID_SOURCE_TYPE** when provided type does not exist, + + * **SUBTYPE_REQUIRED** when there are more sources and subtype + parameter is required, + + * **INVALID_SOURCE** when source id does not exist in provided type. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Candidate is not assigned to given job. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Update a candidate's source + tags: + - candidates + summary: Update a candidate's source + operationId: candidates.source.update + security: + - key: [] + - oauth: + - candidates_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateSource' + description: Candidate source to be set + required: true + /candidates/{id}/properties: + parameters: + - $ref: '#/components/parameters/candidateId' + get: + deprecated: true + responses: + '200': + description: Candidate property values. + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateProperties' + '403': + description: Candidate properties access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code **CANDIDATE_NOT_FOUND** when candidate does not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: | + Please use `GET /candidates/{id}/jobs/{jobId}/properties` instead. + Returns + ``` + {} + ``` + when there is no value set for a candidate property. + tags: + - candidates + summary: Get candidate property values for a candidate + operationId: candidates.properties.get + security: + - key: [] + - oauth: + - candidates_read + parameters: + - in: query + description: context for candidate properties to display + name: context + schema: + type: string + enum: + - PROFILE + - OFFER_FORM + - HIRE_FORM + - OFFER_APPROVAL_FORM + /candidates/{id}/jobs/{jobId}/properties: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + get: + responses: + '200': + description: Candidate property values. + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateProperties' + '403': + description: Candidate properties access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with code **JOB_NOT_FOUND** when candidate is not assigned to given + job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: | + Returns + ``` + {} + ``` + when there is no value set for a candidate property. + tags: + - candidates + summary: Get candidate property values for a candidate's job + operationId: candidates.properties.getForJob + security: + - key: [] + - oauth: + - candidates_read + parameters: + - in: query + description: context for candidate properties to display + name: context + schema: + type: string + enum: + - PROFILE + - OFFER_FORM + - HIRE_FORM + - OFFER_APPROVAL_FORM + put: + responses: + '204': + description: Properties successfully updated. + '400': + description: > + with codes + + * **COUNTRY_NOT_FOUND** when candidate property of COUNTRY type and + country with provided code does not exist, + + * **REGION_NOT_FOUND** when candidate property of REGION type and + region with provided code does not exist, + + * **USER_NOT_FOUND** when candidate property of USER type and user + with provided id does not exist, + + * **CURRENCY_NOT_FOUND** when candidate property of CURRENCY type + and currency with provided code does not exist, + + * **VALUE_NOT_FOUND** when candidate property of SINGLE_SELECT type + and value with provided id does not exist, + + * **INVALID_TEXT_FORMAT** when candidate property of TEXT type and + its value contains forbidden characters + + * **INVALID_EMAIL_FORMAT** when candidate property of TEXT type + (with enabled email validation) and its value contains invalid email + address + + * **INVALID_TEXT_PATTERN_FORMAT** when candidate property of TEXT + type (with enabled custom text pattern validation) and its value + contains value that does not match the pattern + + * **INACCESSIBLE_FIELD** when candidate property cannot be set due + to its own configuration + + * **DUPLICATE_PROPERTIES** when request contains multiple candidate + properties with the same id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Candidate properties access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes + + * **PROPERTY_NOT_FOUND** when one of the provided candidate + properties does not exist + + * **JOB_NOT_FOUND** when candidate is not assigned to given job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Set candidate properties values for the candidate's job + + + Below you can find a list of value examples, dependent on different + + candidate property types. + + + ### BOOLEAN + + + ``` + + [{ "id": "propertyId", "value": true }] + + ``` + + + Value has to be `true` or `false`. + + + ### COUNTRY + + + ``` + + [{ "id": "propertyId", "value": "us" }] + + ``` + + + Value has to be lowercase string in ISO 3166-1 alpha-2 format. + + + ### CURRENCY + + + ``` + + [{ "id": "propertyId", + "value": { + "code": "GBP", + "value": 23232 + } + }] + ``` + + + Code of value is a currency code in ISO 4217 format. + + + ### DATE + + + ``` + + [{ "id": "propertyId", "value": "2015-11-17T23:00:00.000Z" }] + + ``` + + + ### NUMBER, PERCENT + + + ``` + + [{ "id": "propertyId", "value": 42 }] + + ``` + + + ### REGION + + + ``` + + [{ "id": "propertyId", "value": "us-wa" }] + + ``` + + + Value has to be lowercase string in ISO 3166-2 compatible format. + + + ### SINGLE_SELECT + + + ``` + + [{ "id": "propertyId", "value": "f6fe768f-b5e6-4794-9938-c2f42ab0a572" + }] + + ``` + + + Value has to be an id of candidate property value (provided by `GET + + /configuration/candidate-properties/{propertyId}/values`). + + + ### TEXT + + + ``` + + [{ "id": "propertyId", "value": "Example text" }] + + ``` + + + ### USER + + + ``` + + [{ "id": "propertyId", "value": "50fe861de4b00265edec6775" }] + + ``` + + + Value has to be a valid user id + + + ### Resetting a value + + + To reset a value for any of the above types, please pass: + + + ``` + + [{"id": "propertyId"}] + + ``` + tags: + - candidates + summary: Add/update candidate properties values + operationId: candidates.properties.values.batchUpdateForJob + security: + - key: [] + - oauth: + - candidates_manage + requestBody: + $ref: '#/components/requestBodies/BatchCandidatePropertyValue' + /candidates/{id}/properties/{propertyId}: + parameters: + - $ref: '#/components/parameters/candidateId' + put: + deprecated: true + responses: + '204': + description: Property successfully updated. + '400': + description: > + with codes + + * **COUNTRY_NOT_FOUND** when candidate property of COUNTRY type and + country with provided code does not exist, + + * **REGION_NOT_FOUND** when candidate property of REGION type and + region with provided code does not exist, + + * **USER_NOT_FOUND** when candidate property of USER type and user + with provided id does not exist, + + * **CURRENCY_NOT_FOUND** when candidate property of CURRENCY type + and currency with provided code does not exist, + + * **INVALID_TEXT_FORMAT** when candidate property of TEXT type and + its value contains forbidden characters + + * **INVALID_EMAIL_FORMAT** when candidate property of TEXT type + (with enabled email validation) and its value contains invalid email + address + + * **INVALID_TEXT_PATTERN_FORMAT** when candidate property of TEXT + type (with enabled custom text pattern validation) and its value + contains value that does not match the pattern + + * **INACCESSIBLE_FIELD** when candidate property cannot be set due + to its own configuration + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Candidate properties access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with code **PROPERTY_NOT_FOUND** when candidate property does not + exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Please use `PUT /candidates/{id}/jobs/{jobId}/properties` instead. Set a + candidate property value for the candidate. + + Below you can find a list of value examples, dependent on different + candidate property types. + + * **BOOLEAN** + + ``` + + { "value": true } + + ``` + + Value has to be `true` or `false`. + + * **COUNTRY** + + ``` + + { "value": "us" } + + ``` + + Value has to be lowercase string in ISO 3166-1 alpha-2 format. + + * **CURRENCY** + + ``` + + { + "value": { + "code": "GBP", + "value": 23232 + } + } + + ``` + + Code of value is a currency code in ISO 4217 format. + + * **DATE** + + ``` + + { "value": "2015-11-17T23:00:00.000Z" } + + ``` + + * **NUMBER, PERCENT** + + ``` + + { "value": 42 } + + ``` + + * **REGION** + + ``` + + { "value": "us-wa" } + + ``` + + Value has to be lowercase string in ISO 3166-2 compatible format. + + * **SINGLE_SELECT** + + ``` + + { "value": "f6fe768f-b5e6-4794-9938-c2f42ab0a572" } + + ``` + + Value has to be an id of candidate property value (provided by GET + /configuration/candidate-properties/{propertyId}/values). + + * **TEXT** + + ``` + + { "value": "Example text" } + + ``` + + * **USER** + + ``` + + { "value": "50fe861de4b00265edec6775" } + + ``` + + Value has to be a valid user id + + + To reset a value for any of the above types, please pass + + ``` + + {} + + ``` + tags: + - candidates + summary: Add/update candidate property value + operationId: candidates.properties.values.update + security: + - key: [] + - oauth: + - candidates_manage + parameters: + - in: path + description: Identifier of a Candidate Property + name: propertyId + required: true + schema: + type: string + requestBody: + $ref: '#/components/requestBodies/CandidatePropertyInputValue' + /candidates/{id}/jobs/{jobId}/properties/{propertyId}: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + put: + deprecated: true + responses: + '204': + description: Property successfully updated. + '400': + description: > + with codes + + * **COUNTRY_NOT_FOUND** when candidate property of COUNTRY type and + country with provided code does not exist, + + * **REGION_NOT_FOUND** when candidate property of REGION type and + region with provided code does not exist, + + * **USER_NOT_FOUND** when candidate property of USER type and user + with provided id does not exist, + + * **CURRENCY_NOT_FOUND** when candidate property of CURRENCY type + and currency with provided code does not exist, + + * **VALUE_NOT_FOUND** when candidate property of SINGLE_SELECT type + and value with provided id does not exist, + + * **INVALID_TEXT_FORMAT** when candidate property of TEXT type and + its value contains forbidden characters + + * **INVALID_EMAIL_FORMAT** when candidate property of TEXT type + (with enabled email validation) and its value contains invalid email + address + + * **INVALID_TEXT_PATTERN_FORMAT** when candidate property of TEXT + type (with enabled custom text pattern validation) and its value + contains value that does not match the pattern + + * **INACCESSIBLE_FIELD** when candidate property cannot be set due + to its own configuration + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Candidate properties access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes + * **PROPERTY_NOT_FOUND** when candidate property does not exist + * **JOB_NOT_FOUND** when candidate is not assigned to given job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: | + Please use `PUT /candidates/{id}/jobs/{jobId}/properties` instead. + + Set a candidate property value for the candidate. + + Below you can find a list of value examples, dependent on different + candidate property types. + + ### BOOLEAN + + ``` + { "value": true } + ``` + + Value has to be `true` or `false`. + + ### COUNTRY + + ``` + { "value": "us" } + ``` + + Value has to be lowercase string in ISO 3166-1 alpha-2 format. + + ### CURRENCY + + ``` + { + "value": { + "code": "GBP", + "value": 23232 + } + } + ``` + + Code of value is a currency code in ISO 4217 format. + + ### DATE + + ``` + { "value": "2015-11-17T23:00:00.000Z" } + ``` + + ### NUMBER, PERCENT + + ``` + { "value": 42 } + ``` + + ### REGION + + ``` + { "value": "us-wa" } + ``` + + Value has to be lowercase string in ISO 3166-2 compatible format. + + ### SINGLE_SELECT + + ``` + { "value": "f6fe768f-b5e6-4794-9938-c2f42ab0a572" } + ``` + + Value has to be an id of candidate property value (provided by `GET + /configuration/candidate-properties/{propertyId}/values`). + + ### TEXT + + ``` + { "value": "Example text" } + ``` + + ### USER + + ``` + { "value": "50fe861de4b00265edec6775" } + ``` + + Value has to be a valid user id + + ### Resetting a value + + To reset a value for any of the above types, please pass: + + ``` + {} + ``` + tags: + - candidates + summary: Add/update candidate property value + operationId: candidates.properties.values.updateForJob + security: + - key: [] + - oauth: + - candidates_manage + parameters: + - in: path + description: Identifier of a Candidate Property + name: propertyId + required: true + schema: + type: string + requestBody: + $ref: '#/components/requestBodies/CandidatePropertyInputValue' + /candidates/{id}/jobs/{jobId}/screening-answers: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + get: + responses: + '200': + description: Candidate screening question answers for a candidate's job + content: + application/json: + schema: + $ref: '#/components/schemas/ScreeningAnswers' + example: + totalFound: 10 + content: + - id: 0e91d24a-d85b-487d-99ef-eeaca7277d77 + type: radio + category: drivingCurrent + name: Driving Current + label: Do you have a current driver's license? + records: + - fields: + - id: value + label: Value + values: + - id: '0' + label: 'No' + - id: a00c06fb-6693-4138-a005-57c92ab796b6 + type: textarea + category: 04f8fac1-8799-47ef-af54-7dcc4cd10bb9 + name: Free text question + label: Free text question + records: + - fields: + - id: value + label: Value + values: + - id: Long text answer for free text questions + label: Long text answer for free text questions + - id: a98ba616-d7ed-43e5-b5b5-23a9eca031e3 + type: checkbox + category: ba9acad1-71b3-42a1-a059-c05e1bbbc301 + name: Checkbox question + label: Checkbox question + records: + - fields: + - id: confirm + label: Checkbox question + values: + - id: '1' + label: Confirmed + - id: eb93fc47-6f72-4d97-a60e-a265f8621e84 + type: checkbox + category: 20ef7ecb-09c4-4afd-80fc-6a2700a1c3ba + name: Legacy acknowledgment question + label: Legacy acknowledgment question - replaced by checkbox + records: + - fields: + - id: confirm + label: >- + Legacy acknowledgment question - replaced by + checkbox + values: + - id: '1' + label: Confirmed + - id: 40bc2e3b-fd1c-47e8-b514-2365fc705447 + type: eeo + category: eeoInformation + name: EEO - Race and Gender + label: >- + Gender, Race and Ethnicity + [(definitions)](https://smartrecruiters.com/oneclick/static/html/en/eeoGeneral.html) + records: + - fields: + - id: gender + label: Gender + values: + - id: '0' + label: Male + - id: ethnicity + label: Race/Ethnicity + values: + - id: '6' + label: Prefer not to answer + - id: f9ffb0eb-c8e7-4c18-bfa3-7fb22af7da03 + type: currency + category: b2e9b169-77a6-4425-b82a-8dd80c84005b + name: Currency question + label: Currency question + records: + - fields: + - id: amount + label: Value + values: + - id: '1234' + label: '1234' + - id: 910ceed4-a708-4c22-8c10-f53e1b053a7d + type: select + category: 445c45ae-8e5a-48c6-9e05-0846d35bfa6d + name: Multiple choice dropdown + label: Multiple choice dropdown + records: + - fields: + - id: value + label: Value + values: + - id: d6c2c580-5f51-4960-a6e5-a8bc8849f35c + label: third value + - id: 5e9cc528-9640-454d-8ef6-19bd06ce2ea9 + label: second value + - id: 10a341a3-b8ff-4121-9dee-75b442e64f00 + label: first value + - id: 1549f34c-fdda-459a-8c01-be8ab6cef19f + type: languages + category: languages + name: Languages + label: Languages + records: + - fields: + - id: lang + label: Language + values: + - id: English + label: English + - id: level + label: Proficiency level + values: + - id: '2' + label: Advanced + - fields: + - id: lang + label: Language + values: + - id: Spanish + label: Spanish + - id: level + label: Proficiency level + values: + - id: '0' + label: Beginner + - fields: + - id: lang + label: Language + values: + - id: French + label: French + - id: level + label: Proficiency level + values: + - id: '1' + label: Intermediate + - id: 2bb9faa5-dbe9-42dc-9c00-381dddb0abb6 + type: work_shifts + category: preferredWorkShifts + name: Work Shifts + label: What are your preferred work shifts? + records: + - fields: + - id: day + label: Day + values: + - id: '2' + label: Weekdays + - id: from + label: From + values: + - id: '8' + label: 08:00 AM + - id: to + label: To + values: + - id: '16' + label: 04:00 PM + - fields: + - id: day + label: Day + values: + - id: '2' + label: Weekdays + - id: from + label: From + values: + - id: '10' + label: 10:00 AM + - id: to + label: To + values: + - id: '14' + label: 02:00 PM + - id: 6c0ed428-f167-4ab0-967d-564560617e7b + type: text + category: yourName + name: Your Name + label: Your Name + records: + - fields: + - id: value + values: + - id: John + label: John + '403': + description: Screening Question Answers access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Screening Question Answers not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Returns candidate screening question answers for a candidate's job. + Returns an empty array when there is no screening answers for given + candidate's job. + + + UUID in question category indicates custom question. Other value + indicates predefined library question. + + + In order to create human readable format of answers please use label + properties. Ignore labels for answers with single field. + + Based on labels from included example you can get following text: + + + ```text + + Do you have a current driver's license? + - No + + Free text question + - Long text answer for free text questions + + Checkbox question + - Confirmed + + Legacy acknowledgment question - replaced by checkbox + - Confirmed + + Gender, Race and Ethnicity + [(definitions)](https://smartrecruiters.com/oneclick/static/html/en/eeoGeneral.html) + - Gender: Male + - Race/Ethnicity: Prefer not to answer + + Currency question + - 1234 + + Multiple choice dropdown + - third value, second value, first value + + Languages + 1) + - Language: English + - Proficiency level: Advanced + 2) + - Language: Spanish + - Proficiency level: Beginner + 3) + - Language: French + - Proficiency level: Intermediate + + What are your preferred work shifts? + + 1) + - Day: Weekdays + - From: 08:00 AM + - To: 04:00 PM + 2) + - Day: Weekdays + - From: 10:00 AM + - To: 02:00 PM + + Your Name + - John + ``` + tags: + - candidates + summary: Get candidate screening answers for a candidate's job + operationId: candidates.screening-answers.get + security: + - key: [] + - oauth: + - candidates_read + /jobs/{jobId}/candidates: + parameters: + - $ref: '#/components/parameters/jobId' + post: + responses: + '201': + description: Created candidate. + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateDetails' + '400': + description: > + with codes + + * **SOURCE_NOT_FOUND** when provided source does not exist, + + * **SUBTYPE_REQUIRED** when there are more sources and subtype + parameter is required + + * **INVALID_SOURCE_ID** when invalid source ID provided for a + specified sourceIdType. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: | + with code **PERMISSION_DENIED** when job access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + with code **PERMISSION_DENIED** when you are not permitted to create + candidate + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with code **SOURCE_TYPE_NOT_FOUND** when provided source type does + not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Create a new candidate and assign to a job. + + + **Tracking candidate source** + + + When adding a new candidate, it's very important you track its source + appropriately. In order to associate a source with your app / + integration, add the below object to a candidate body object for this + endpoint: + + ``` + + { + "sourceDetails": { + "sourceTypeId": "string", + "sourceSubTypeId": "string", + "sourceId": "string" + } + } + + ``` + + **sourceTypeId** - it's a Source Type - available values can be found + using [get + /configuration/sources](https://developers.smartrecruiters.com/reference/configurationsourcetypes-1) + endpoint + + + **sourceSubTypeId** - it's a Source Subtype, an optional parameter - + available values can be found using [get + /configuration/sources](https://developers.smartrecruiters.com/reference/configurationsourcetypes-1) + endpoint + + + **sourceId** - it's a Source Id - available values for a given + sourceTypeId can be found using [get + /configuration/sources/:sourceTypeId/values](https://developers.smartrecruiters.com/reference/configurationsourcevaluesall-1) + endpoint + + + NOTE: Not defining the source will default to **API** source. + + + NOTE II: In case you can't find an appropriate source to track against + you can: + + * Create a custom source for each customer account separately on [this + admin + page](https://www.smartrecruiters.com/settings/configuration/custom-sources\) + (you need to be logged in as an admin to the customer account in order + to view this page) + + * Request to + [partners@smartrecruiters.com](mailto:partners@smartrecruiters.com) + adding a standard source that will be available for all customers if + your app / integration is productised (available to all SmartRecruiters + customers) + tags: + - candidates + summary: Create a new candidate and assign to a job + operationId: candidates.addToJob + security: + - key: [] + - oauth: + - candidates_create + requestBody: + $ref: '#/components/requestBodies/CandidateInput' + /jobs/{jobId}/candidates/cv: + parameters: + - $ref: '#/components/parameters/jobId' + post: + responses: + '201': + description: Created candidate. + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateDetails' + '400': + description: > + with codes + + * **SOURCE_NOT_FOUND** when provided source does not exist, + + * **SUBTYPE_REQUIRED** when there are more sources and subtype + parameter is required + + * **UNPARSABLE_RESUME** when provided resume cannot be parsed, e.g. + an image + + * **INCOMPLETE_RESUME** when provided resume does not contain all + required information to create a candidate. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Job access denied. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + with code **PERMISSION_DENIED** when you are not permitted to create + candidate + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + **SOURCE_TYPE_NOT_FOUND** when provided source type does not exist. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Parse a resume, create a candidate and assign to a job. + tags: + - candidates + summary: Parse a resume, create a candidate and assign to a job. + operationId: candidates.resume.addToJob + security: + - key: [] + - oauth: + - candidates_create + requestBody: + $ref: '#/components/requestBodies/Resume' + /candidates/{id}/jobs/{jobId}: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + get: + responses: + '200': + description: Candidate's application + content: + application/json: + schema: + $ref: '#/components/schemas/Application' + '403': + description: Permission denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Application not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get details of a candidate's application to a job + tags: + - candidates + summary: Get details of a candidate's application to a job + operationId: candidates.getApplication + security: + - key: [] + - oauth: + - candidates_read + /configuration/company: + get: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CompanyConfiguration' + description: Get all information about your company. + tags: + - configuration + summary: Get company information + operationId: configuration.company.my + security: + - key: [] + - oauth: + - company_read + - configuration_read + /configuration/job-properties: + get: + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JobPropertyDefinitionList' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get a list of available job properties. + tags: + - configuration + summary: Get a list of available job properties + operationId: configuration.job-properties.all + security: + - key: [] + - oauth: + - configuration_read + post: + responses: + '201': + description: Created job property + content: + application/json: + schema: + $ref: '#/components/schemas/JobPropertyDefinition' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + With codes: + + * *JOB_PROPERTY_LIMIT_EXCEEDED* when job properties limit is + reached, + + * *DEFINITION_NAME_IS_NOT_ALLOWED* when job property name is + restricted. + description: Creates a job property + tags: + - configuration + summary: Create a job property + operationId: configuration.job-properties.create + security: + - key: [] + - oauth: + - configuration_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/JobPropertyDefinitionCreationRequest' + description: job property to be created + /configuration/job-properties/{id}: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + get: + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JobPropertyDefinition' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Job property not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get job property by id + tags: + - configuration + summary: Get job property by id + operationId: configuration.job-properties.get + security: + - key: [] + - oauth: + - configuration_read + patch: + responses: + '200': + description: Updated job property + content: + application/json: + schema: + $ref: '#/components/schemas/JobPropertyDefinition' + '400': + description: Job property is not editable + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Job property not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + With code: + + * *DEFINITION_NAME_IS_NOT_ALLOWED* when job property name is + restricted. + description: Updates a job property. + tags: + - configuration + summary: Update a job property + operationId: configuration.job-properties.update + security: + - key: [] + - oauth: + - configuration_manage + requestBody: + $ref: '#/components/requestBodies/JSONPatch' + /configuration/job-properties/{id}/translations: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + patch: + security: + - key: [] + - oauth: + - configuration_manage + responses: + '204': + description: Translations accepted + '400': + description: | + with codes + * *PROPERTY_INVALID* - when value contains invalid characters + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes + * *JOB_PROPERTY_NOT_FOUND* - when job property not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: >- + There is more than one translation with the same language in the + input + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: 'Invalid input: missing required data, invalid format' + description: Submit a job property's translations to different languages + tags: + - configuration + summary: Add a job property's translations + operationId: configuration.job-properties.translations.patch + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/LabelTranslations' + required: true + /configuration/job-properties/{id}/values: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + get: + parameters: + - $ref: '#/components/parameters/language' + - $ref: '#/components/parameters/pageId' + - $ref: '#/components/parameters/pageSize' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JobPropertyValueDefinitionList' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Job property not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get available job property values. + tags: + - configuration + summary: Get available job property values + operationId: configuration.job-properties.values.get + security: + - key: [] + - oauth: + - configuration_read + post: + responses: + '201': + description: Created job property value + content: + application/json: + schema: + $ref: '#/components/schemas/JobPropertyValueDefinition' + '400': + description: > + when value is invalid with codes: + + * *VALUES_NOT_ALLOWED* when values are not allowed (e.g. for free + text fields) + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: When job property not found. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: When job property value with given label already exists. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + when value id is invalid or with codes: + + * *ACTIVE_VALUES_LIMIT_REACHED* when limit of active job property + values is reached + + * *VALUES_LIMIT_REACHED* when the limit of job property values + (active and inactive) is reached + + * *VALUE_LABEL_IS_BLANK* when provided label is blank + + * *VALUE_LABEL_IS_INVALID* when provided label is not valid, e.g. + contains leading/trailing whitespaces + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Creates a job property value. + tags: + - configuration + summary: Create a job property value + operationId: configuration.job-properties.values.create + security: + - key: [] + - oauth: + - configuration_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/JobPropertyValueDefinition' + description: job property object to be created + /configuration/job-properties/{id}/values/{valueId}: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + - $ref: '#/components/parameters/jobPropertyValueId' + delete: + deprecated: true + responses: + '204': + description: '' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * *JOB_PROPERTY_NOT_FOUND* when job property does not exist + + * *JOB_PROPERTY_VALUE_NOT_FOUND* when job property value does not + exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Archive a job property value. Please use `PUT + /configuration/job-properties/{id}/archive-values/{valueId}` instead. + tags: + - configuration + summary: Archive a job property value + operationId: configuration.job-properties.values.deprecatedArchive + security: + - key: [] + - oauth: + - configuration_manage + put: + deprecated: true + responses: + '204': + description: '' + '404': + description: > + with codes: + + * *JOB_PROPERTY_NOT_FOUND* when job property does not exist + + * *JOB_PROPERTY_VALUE_NOT_FOUND* when job property value does not + exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + with codes: + + * *VALUE_LABEL_IS_INVALID* when value label contains invalid + characters. In order to unarchive the value, first update the label + with only valid characters. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Unarchive a job property value. `DELETE + /configuration/job-properties/{id}/archive-values/{valueId}` instead. + tags: + - configuration + summary: Unarchive a job property value + operationId: configuration.job-properties.values.deprecatedUnarchive + security: + - key: [] + - oauth: + - configuration_manage + patch: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JobPropertyValueDefinition' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * *JOB_PROPERTY_NOT_FOUND* when job property does not exist + + * *JOB_PROPERTY_VALUE_NOT_FOUND* when job property value does not + exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: When label being updated conflicts with already existing one. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + with input validation fails or with codes: + + * *ACTIVE_VALUES_LIMIT_REACHED* when limit of active job property + values is reached. + + * *JSON_PATCH_INVALID* when patch json is invalid. + + * *VALUE_LABEL_IS_BLANK* when provided label is blank + + * *VALUE_LABEL_IS_INVALID* when provided label is not valid, e.g. + contains leading/trailing whitespaces + description: >- + Update a job property value. Returns an updated job property value + object. + tags: + - configuration + summary: Update a job property value + operationId: configuration.job-properties.values.update + security: + - key: [] + - oauth: + - configuration_manage + requestBody: + $ref: '#/components/requestBodies/JSONPatch' + /configuration/job-properties/{id}/values/{valueId}/translations: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + - $ref: '#/components/parameters/jobPropertyValueId' + patch: + security: + - key: [] + - oauth: + - configuration_manage + responses: + '204': + description: Translations accepted + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes + * *JOB_PROPERTY_NOT_FOUND* - when job property not found + * *JOB_PROPERTY_VALUE_NOT_FOUND* when job property's value with given id does not exist. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: >- + There is more than one translation with the same language in the + input + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: 'Invalid input: missing required data, invalid format' + description: Submit a job property value's translations to different languages + tags: + - configuration + summary: Add a job property value's translations + operationId: configuration.job-properties.values.translations.patch + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/LabelTranslations' + required: true + /configuration/job-properties/{id}/archive-values/{valueId}: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + - $ref: '#/components/parameters/jobPropertyValueId' + put: + responses: + '204': + description: '' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * *JOB_PROPERTY_NOT_FOUND* when job property does not exist + + * *JOB_PROPERTY_VALUE_NOT_FOUND* when job property value does not + exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Archive a job property value + tags: + - configuration + summary: Archive a job property value + operationId: configuration.job-properties.values.archive + security: + - key: [] + - oauth: + - configuration_manage + delete: + responses: + '204': + description: '' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * *JOB_PROPERTY_NOT_FOUND* when job property does not exist + + * *JOB_PROPERTY_VALUE_NOT_FOUND* when job property value does not + exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + with codes: + + * *VALUE_LABEL_IS_INVALID* when value label contains invalid + characters. In order to unarchive the value, first update the label + with only valid characters. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unarchive a job property value + tags: + - configuration + summary: Unarchive a job property value + operationId: configuration.job-properties.values.unarchive + security: + - key: [] + - oauth: + - configuration_manage + /configuration/job-properties/{id}/activation: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + put: + responses: + '204': + description: '' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Job property not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: When trying to activate job property that has no active values + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Activates a job property with given id. + tags: + - configuration + summary: Activate a job property + operationId: configuration.job-properties.activate + security: + - key: [] + - oauth: + - configuration_manage + delete: + responses: + '204': + description: '' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Job property not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Deactivates a job property. + tags: + - configuration + summary: Deactivate a job property + operationId: configuration.job-properties.deactivate + security: + - key: [] + - oauth: + - configuration_manage + /configuration/job-properties/{id}/dependents: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + get: + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DependentJobProperties' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + * **JOB_PROPERTY_NOT_FOUND** when job property not found, + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get list of job property's dependents + tags: + - configuration + summary: Get job property's dependents + operationId: configuration.job-properties.dependents.all + security: + - key: [] + - oauth: + - configuration_read + post: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DependentJobProperties' + '400': + description: > + with codes + + * **JOB_PROPERTIES_CIRCULAR_DEPENDENCY** for job properties circular + dependency + + * **JOB_PROPERTY_ALREADY_DEPENDENT** when job property is already + other job property's dependent + + * **DEPENDENT_JOB_PROPERTY_NOT_FOUND** when dependent job property + not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + * **JOB_PROPERTY_NOT_FOUND** when job property not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: when input validation fails + description: Create dependencies between job properties + tags: + - configuration + summary: Create job property dependents + operationId: configuration.job-properties.dependents.create + security: + - key: [] + - oauth: + - configuration_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DependentJobPropertiesIds' + description: Job properties' id + required: true + /configuration/job-properties/{id}/dependents/{dependentId}: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + - $ref: '#/components/parameters/jobPropertyDependentId' + delete: + responses: + '204': + description: '' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with code + + * **JOB_PROPERTY_NOT_FOUND** when job property not found + + * **JOB_PROPERTY_DEPENDENT_NOT_FOUND** when job property dependent + not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Remove dependency between job properties + tags: + - configuration + summary: Remove job property's dependent + operationId: configuration.job-properties.dependents.remove + security: + - key: [] + - oauth: + - configuration_manage + /configuration/job-properties/{id}/dependents/{dependentId}/values: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + - $ref: '#/components/parameters/jobPropertyDependentId' + get: + deprecated: true + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DependentJobPropertyValuesRelations' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **JOB_PROPERTY_NOT_FOUND** when job property not found, + + * **JOB_PROPERTY_DEPENDENT_NOT_FOUND** when job property dependent + not found + + * **DEPENDENCY_NOT_FOUND** when dependency between properties not + found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Get dependent job property's values with corelation to the parent field. + Please use GET + configuration/job-properties/{id}/values/{valueId}/dependents/{dependentId}/values + (with paging) instead. + tags: + - configuration + summary: Get dependent job property's values + operationId: configuration.job-properties.dependents.values.all + security: + - key: [] + - oauth: + - configuration_read + /configuration/job-properties/{id}/values/{valueId}/dependents/{dependentId}/values: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + - $ref: '#/components/parameters/jobPropertyValueId' + - $ref: '#/components/parameters/jobPropertyDependentId' + get: + parameters: + - $ref: '#/components/parameters/language' + - $ref: '#/components/parameters/pageId' + - $ref: '#/components/parameters/pageSize' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DependentJobPropertyValues' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **JOB_PROPERTY_NOT_FOUND** when job property not found, + + * **JOB_PROPERTY_VALUE_NOT_FOUND* when job property value not found + + * **JOB_PROPERTY_DEPENDENT_NOT_FOUND** when job property dependent + not found + + * **DEPENDENCY_NOT_FOUND** when dependency between properties not + found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Get list of job property's dependent values for specific job property's + value + tags: + - configuration + summary: Get job property's dependent values + operationId: configuration.job-properties.dependents.values.get + security: + - key: [] + - oauth: + - configuration_read + post: + responses: + '204': + description: '' + '400': + description: > + with code: + + * **JOB_PROPERTY_DEPENDENT_VALUE_NOT_FOUND** when job property + dependent value id not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **JOB_PROPERTY_NOT_FOUND** when job property not found, + + * **JOB_PROPERTY_VALUE_NOT_FOUND* when job property value not found + + * **JOB_PROPERTY_DEPENDENT_NOT_FOUND** when job property dependent + not found + + * **DEPENDENCY_NOT_FOUND** when dependency between properties not + found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: > + with code: + + * **JOB_PROPERTY_DEPENDENT_VALUE_EXISTS** when job property's + dependent value exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: when input validation fails + description: Add job property's dependent value for specific job property's value + tags: + - configuration + summary: Add job property's dependent value + operationId: configuration.job-properties.dependents.values.add + security: + - key: [] + - oauth: + - configuration_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Identifiable' + description: Identifier of job property's dependent value + required: true + /configuration/job-properties/{id}/values/{valueId}/dependents/{dependentId}/values/{dependentValueId}: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + - $ref: '#/components/parameters/jobPropertyValueId' + - $ref: '#/components/parameters/jobPropertyDependentId' + - $ref: '#/components/parameters/jobPropertyDependentValueId' + delete: + responses: + '204': + description: '' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **JOB_PROPERTY_NOT_FOUND** when job property not found, + + * **JOB_PROPERTY_VALUE_NOT_FOUND* when job property value not found + + * **JOB_PROPERTY_DEPENDENT_NOT_FOUND** when job property's dependent + not found + + * **JOB_PROPERTY_DEPENDENT_VALUE_NOT_FOUND** when job property's + dependent value not found + + * **DEPENDENCY_NOT_FOUND** when dependency between properties not + found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Remove relationship between dependent job properties values + tags: + - configuration + summary: Remove job property's dependent values relationship + operationId: configuration.job-properties.dependents.values.remove + security: + - key: [] + - oauth: + - configuration_manage + /configuration/departments: + post: + responses: + '201': + description: Created department + content: + application/json: + schema: + $ref: '#/components/schemas/Department' + '400': + description: >- + With code **DEPARTMENT_LABEL_NOT_UNIQUE** when department with given + label already exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - configuration + summary: Creates department + operationId: configuration.department.create + security: + - key: [] + - oauth: + - configuration_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Department' + description: department to be created + required: true + get: + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: Department list + content: + application/json: + schema: + $ref: '#/components/schemas/Departments' + tags: + - configuration + summary: Get departments + operationId: configuration.department.all + security: + - key: [] + - oauth: + - configuration_read + /configuration/departments/{id}: + get: + responses: + '200': + description: Department + content: + application/json: + schema: + $ref: '#/components/schemas/Department' + '404': + description: Department not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - configuration + summary: Get department + operationId: configuration.department.get + security: + - key: [] + - oauth: + - configuration_read + parameters: + - in: path + description: Identifier of a department + name: id + required: true + schema: + type: string + /configuration/hiring-processes: + get: + responses: + '200': + description: Hiring processes list + content: + application/json: + schema: + $ref: '#/components/schemas/HiringProcesses' + tags: + - configuration + summary: Get list of hiring process + operationId: configuration.hiring-process.all + security: + - key: [] + - oauth: + - configuration_read + /configuration/hiring-processes/{id}: + get: + responses: + '200': + description: Hiring process + content: + application/json: + schema: + $ref: '#/components/schemas/HiringProcess' + '404': + description: Hiring process not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - configuration + summary: Get hiring process + operationId: configuration.hiring-process.get + security: + - key: [] + - oauth: + - configuration_read + parameters: + - in: path + description: Identifier of a hiring process + name: id + required: true + schema: + type: string + /configuration/offer-properties: + get: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/OfferPropertiesDefinition' + '403': + description: | + with code **NO_ACCESS_TO_OFFERS** when not permitted to see offers + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get a list of available offer properties. + tags: + - configuration + summary: Get a list of available offer properties + operationId: configuration.offer-properties.all + security: + - key: [] + - oauth: + - configuration_read + /configuration/candidate-properties: + get: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CandidatePropertyDefinitionList' + '403': + description: Permission denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get all candidate properties and their configuration for a company + tags: + - configuration + summary: Get a list of available candidate properties + operationId: configuration.candidate-properties.all + security: + - key: [] + - oauth: + - configuration_read + /configuration/candidate-properties/{id}: + parameters: + - $ref: '#/components/parameters/candidatePropertyId' + get: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CandidatePropertyDefinition' + '404': + description: Candidate property not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get candidate property details and its configuration by id. + tags: + - configuration + summary: Get candidate property by id + operationId: configuration.candidate-properties.get + security: + - key: [] + - oauth: + - configuration_read + /configuration/candidate-properties/{id}/values: + parameters: + - $ref: '#/components/parameters/candidatePropertyId' + get: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CandidatePropertyValueList' + '400': + description: >- + With code **CANDIDATE_PROPERTY_NOT_SINGLE_SELECT** when candidate + property type is not SINGLE_SELECT + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Candidate property not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Lists all available values for given candidate property id. This + endpoint is available only for SINGLE_SELECT candidate property type. + tags: + - configuration + summary: Get Candidate Property values + operationId: configuration.candidate-properties.values.all + security: + - key: [] + - oauth: + - configuration_read + post: + responses: + '201': + description: Created candidate property value + content: + application/json: + schema: + $ref: '#/components/schemas/CandidatePropertyValue' + '400': + description: > + With codes + + * **CANDIDATE_PROPERTY_NOT_SINGLE_SELECT** when candidate property + type is not SINGLE_SELECT + + * **CANDIDATE_PROPERTY_VALUES_LIMIT_EXCEEDED** when SINGLE_SELECT + candidate property values limit is exceeded + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Candidate property not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: > + with codes + + * **CANDIDATE_PROPERTY_VALUE_ID_ALREADY_EXISTS** when candidate + property with given id already exists, + + * **CANDIDATE_PROPERTY_VALUE_LABEL_ALREADY_EXISTS** when candidate + property with given label already exists. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Create SINGLE_SELECT candidate property value + tags: + - configuration + summary: Create candidate property value + operationId: configuration.candidate-properties.values.create + security: + - key: [] + - oauth: + - configuration_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CandidatePropertyValue' + description: Candidate property value. + required: true + /configuration/candidate-properties/{id}/values/{valueId}: + parameters: + - $ref: '#/components/parameters/candidatePropertyId' + - $ref: '#/components/parameters/candidatePropertyValueId' + get: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CandidatePropertyValue' + '400': + description: >- + With code **CANDIDATE_PROPERTY_NOT_SINGLE_SELECT** when candidate + property type is not SINGLE_SELECT + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **CANDIDATE_PROPERTY_NOT_FOUND** when candidate property with + given id does not exist, + + * **CANDIDATE_PROPERTY_VALUE_NOT_FOUND** when candidate property + value with given id does not exist. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get Candidate Property value by its id. + tags: + - configuration + summary: Get Candidate Property value by id + operationId: configuration.candidate-properties.values.get + security: + - key: [] + - oauth: + - configuration_read + put: + responses: + '201': + description: Updated candidate property value + content: + application/json: + schema: + $ref: '#/components/schemas/CandidatePropertyValue' + '400': + description: >- + With codes + + * **CANDIDATE_PROPERTY_NOT_SINGLE_SELECT** when candidate property + type is not SINGLE_SELECT + + * **CANDIDATE_PROPERTY_LIBRARY_READONLY_RESTRICTION** when modifying + read-only value options + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **CANDIDATE_PROPERTY_NOT_FOUND** when candidate property with + given id does not exist, + + * **CANDIDATE_PROPERTY_VALUE_NOT_FOUND** when candidate property + value with given id does not exist. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: > + with code **CANDIDATE_PROPERTY_VALUE_LABEL_ALREADY_EXISTS** when + candidate property with given label already exists. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Update candidate property value label + tags: + - configuration + summary: Update candidate property value label + operationId: configuration.candidate-properties.values.update + security: + - key: [] + - oauth: + - configuration_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CandidatePropertyValueLabel' + description: Candidate property value label. + required: true + delete: + responses: + '204': + description: '' + '400': + description: > + with codes: + + * **CANDIDATE_PROPERTY_NOT_SINGLE_SELECT** when candidate property + type is not SINGLE_SELECT, + + * **CANDIDATE_PROPERTY_LAST_VALUE** when attempting to remove the + last candidate property value + + * **CANDIDATE_PROPERTY_LIBRARY_READONLY_RESTRICTION** when + attempting to remove library property value + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **CANDIDATE_PROPERTY_NOT_FOUND** when candidate property with + given id does not exist, + + * **CANDIDATE_PROPERTY_VALUE_NOT_FOUND** when candidate property + value with given id does not exist. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Remove candidate property value label + tags: + - configuration + summary: Remove candidate property value + operationId: configuration.candidate-properties.values.delete + security: + - key: [] + - oauth: + - configuration_manage + /configuration/sources: + get: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/SourceTypes' + description: Get a list of all available candidate source type with subtypes + tags: + - configuration + summary: List candidate source types with subtypes + operationId: configuration.source.types + security: + - key: [] + - oauth: + - configuration_read + /configuration/sources/{sourceType}/values: + parameters: + - $ref: '#/components/parameters/sourceType' + get: + responses: + '200': + description: List of candidate sources + content: + application/json: + schema: + $ref: '#/components/schemas/Sources' + '400': + description: > + with codes + + * **SOURCE_TYPE_AND_SUBTYPE_INVALID** when provided pair (type, + subtype) is invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Source not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get a list of all available candidate sources by type. + tags: + - configuration + summary: List candidate sources + operationId: configuration.source.values.all + security: + - key: [] + - oauth: + - configuration_read + parameters: + - $ref: '#/components/parameters/sourceSubType' + - in: query + description: number of elements to return. max value is 100 + name: limit + required: false + schema: + type: integer + minimum: 1 + maximum: 100 + default: 100 + - in: query + description: number of elements to skip while processing result + name: offset + required: false + schema: + type: integer + minimum: 0 + default: 0 + /configuration/sources/{sourceType}/values/{sourceValueId}: + parameters: + - $ref: '#/components/parameters/sourceType' + - $ref: '#/components/parameters/sourceValueId' + get: + responses: + '200': + description: Source + content: + application/json: + schema: + $ref: '#/components/schemas/Source' + '400': + description: > + with codes: + + * **SOURCE_TYPE_INVALID** when provided type does not exist, + + * **SUBTYPE_REQUIRED** when there are more sources and subtype + parameter is required, + + * **SOURCE_TYPE_AND_SUBTYPE_INVALID** when provided pair (type, + subtype) is invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Source with given source value id not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get a single candidate sources for a given type. + tags: + - configuration + summary: Get a candidate source + operationId: configuration.source.values.single + security: + - key: [] + - oauth: + - configuration_read + parameters: + - $ref: '#/components/parameters/sourceSubType' + /configuration/sources/{sourceIdentifier}: + parameters: + - $ref: '#/components/parameters/sourceIdentifier' + get: + responses: + '200': + description: Source + content: + application/json: + schema: + $ref: '#/components/schemas/SourceDefinition' + '400': + description: |- + Invalid source identifier. With codes + * *INVALID_IDENTIFIER* - when identifier has invalid format. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: |- + Source with given identifier not found. With codes + * *SOURCE_NOT_FOUND* - when source is not found. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Get a single candidate source for a given identifier (included deleted + source). + tags: + - configuration + summary: Get a candidate source by identifier. + operationId: configuration.source.values.singleByIdentifier + security: + - key: [] + - oauth: + - configuration_read + /configuration/rejection-reasons: + get: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Properties' + description: Get rejection reasons + tags: + - configuration + summary: Get rejection reasons + operationId: configuration.reasons.rejection.all + security: + - key: [] + - oauth: + - configuration_read + /configuration/withdrawal-reasons: + get: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Properties' + '403': + description: Permission denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get withdrawal reasons + tags: + - configuration + summary: Get withdrawal reasons + operationId: configuration.reasons.withdrawal.all + security: + - key: [] + - oauth: + - configuration_read + /publications/{postingId}: + get: + tags: + - feed + summary: Get posting by id + description: >- + This endpoint allows getting a single job posting information.
You + must pass authentication token through X-SmartToken HTTP header. + operationId: findPostingUsingJson + parameters: + - name: postingId + in: path + description: Posting id to find + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: Posting successfully returned + content: + application/json: + schema: + $ref: '#/components/schemas/FeedJobAd' + '401': + description: Unauthorized + '404': + description: Not found + security: + - key: [] + put: + tags: + - feed + summary: Update posting information + description: >- +

This endpoint allows updating a single job posting status and + URL during a job posting lifecycle.
You must pass + authentication token through X-SmartToken HTTP + header.

Complete list of body parameters below:

Status - + This is the posting status on your job board. It should be updated with + one of the following values:LiveUrl - This is direct URL to the job you have + published in your job board; will be surfaced to SmartRecruiters + users
Comment - This is field in which you pass error details + when one occurs while publishing a job; error details will be available + to our Support Team

+ operationId: updatePostingUsingJson + parameters: + - name: postingId + in: path + description: >- + A single posting id. Allows updating information only for the + defined postings. + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/PostingUpdateRequest' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/PostingUpdateRequest' + required: true + responses: + '204': + description: Posting successfully updated + '400': + description: Payload not valid + '401': + description: Wrong token + '404': + description: PostingId not found + security: + - key: [] + /publications: + get: + tags: + - feed + summary: Get a list of postings + description: >- +

Get job postings published to your job board.
You must pass + authentication token through X-SmartToken HTTP header.

By + default, this endpoint will return only postings created in the last 30 + days with the status Pending. Use additional parameters to + control which postings are returned.

+ operationId: postingsJSONStream + parameters: + - name: updatedAfter + in: query + description: >- + List postings created after the specified date.

Date + should be in ISO 8601 format: (e.g.: + '2015-07-27T08:43:33.000Z').

If no value is provided, only + postings created in the last 30 days will be returned. + schema: + type: string + - name: status + in: query + description: >- + List of posting statuses separated by comma.

Status + definition:

Example: status=Active,Error + schema: + type: array + items: + type: string + enum: + - Pending + - UnderPosting + - Active + - toUnpost + - Inactive + - Error + default: Pending + - name: offset + in: query + description: >- + Number of elements to skip while processing result.
Allowed + range: [0, 2^31-1]. + schema: + minimum: 0 + type: string + default: '0' + - name: limit + in: query + description: 'Maximum number of postings returned.
Allowed range: [0, 100].' + schema: + maximum: 100 + minimum: 0 + type: string + default: '100' + responses: + '200': + description: Postings successfully returned + content: + application/json: + schema: + $ref: '#/components/schemas/FeedPublication' + '401': + description: Unauthorized + '404': + description: Not found + security: + - key: [] + /interview-types: + get: + responses: + '200': + description: Retrieves interview types + content: + application/json: + schema: + $ref: '#/components/schemas/InterviewTypes' + '500': + $ref: '#/components/responses/ServerError' + tags: + - interview types + summary: Retrieves interview types + operationId: types.get + security: + - key: [] + - oauth: + - interview_types_read + patch: + responses: + '204': + description: Interview types updated + '403': + description: Forbidden to create an interview type + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: > + with codes: + + * **INTERVIEW_TYPES_SIZE_EXCEEDED** when maximum size of 2000 + interview types exceeded + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: When input validation fails + '500': + $ref: '#/components/responses/ServerError' + tags: + - interview types + summary: Adds interview types to already existing ones + operationId: types.update + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/InterviewTypes' + description: Interview types to be added + required: true + security: + - key: [] + - oauth: + - interview_types_write + /interview-types/{interviewType}: + parameters: + - $ref: '#/components/parameters/InterviewType' + delete: + responses: + '204': + description: Interview type deleted + '403': + description: Forbidden to delete an interview type + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **INTERVIEW_TYPE_NOT_FOUND** When no interview type with given + name + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - interview types + summary: Removes interview type with given name + operationId: types.delete + security: + - key: [] + - oauth: + - interview_types_write + /interviews: + get: + parameters: + - $ref: '#/components/parameters/ApplicationId' + responses: + '200': + description: List of interviews + content: + application/json: + schema: + $ref: '#/components/schemas/InterviewsList' + '403': + description: Forbidden to access interviews list + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **APPLICATION_NOT_FOUND** when no application found with given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - interviews + summary: Retrieves a list of interviews + description: List of interviews + operationId: interviews.get-list + security: + - key: [] + - oauth: + - interviews_read + post: + responses: + '201': + description: Created interview + content: + application/json: + schema: + $ref: '#/components/schemas/Interview' + '400': + description: | + with codes: + * **INVALID_TIMEZONE** when invalid timezone + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden to create an interview + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + When input validation fails or with codes: + + * **INACTIVE_OR_DELETED_ORGANIZER** when inactive or deleted + organizer + + * **INACTIVE_OR_DELETED_INTERVIEWERS** when at least one of the + interviewers is inactive or deleted + + * **END_DATE_BEFORE_START_DATE** when end date of the timeslot is + before start date + + * **NON_EXISTING_ORGANIZER** when organizer does not exist + + * **NON_EXISTING_INTERVIEWERS** when at least one of the + interviewers does not exist + + * **CANDIDATE_NOT_FOUND** when candidate with given id not found + + * **JOB_NOT_FOUND** when job with given id not found + + * **APPLICATION_NOT_FOUND** when application for given candidate id + and job id not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - interviews + summary: Creates an interview + operationId: interviews.create + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Interview' + description: Interview to be added + required: true + security: + - key: [] + - oauth: + - interviews_write + /interviews/{interviewId}: + parameters: + - $ref: '#/components/parameters/InterviewId' + get: + responses: + '200': + description: Interview + content: + application/json: + schema: + $ref: '#/components/schemas/Interview' + '403': + description: Forbidden to access an interview + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **INTERVIEW_NOT_FOUND** when no interview with given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - interviews + summary: Retrieves an interview + description: Interview details + operationId: interviews.get + security: + - key: [] + - oauth: + - interviews_read + patch: + responses: + '204': + description: Interview updated + '400': + description: | + with codes: + * **INVALID_TIMEZONE** when invalid timezone + '403': + description: Forbidden to update an interview + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **INTERVIEW_NOT_FOUND** when no interview with given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: When input validation fails + '500': + $ref: '#/components/responses/ServerError' + tags: + - interviews + summary: Modifies an interview + operationId: interviews.update + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/InterviewToUpdateInput' + description: Interview to be updated + required: true + security: + - key: [] + - oauth: + - interviews_write + delete: + responses: + '204': + description: Interview was deleted + '403': + description: Forbidden to delete an interview + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **INTERVIEW_NOT_FOUND** when no interview with given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - interviews + summary: Deletes an interview + operationId: interviews.delete + security: + - key: [] + - oauth: + - interviews_write + /interviews/{interviewId}/timeslots: + post: + responses: + '201': + description: Created timeslot with id + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/Timeslot' + '403': + description: Forbidden to create a timeslot + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **INTERVIEW_NOT_FOUND** when no interview with given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: > + with codes: + + * **CANNOT_ADD_MORE_TIMESLOTS** when interview already contains + maximum number of timeslots + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + When input validation fails or with codes: + + * **INACTIVE_OR_DELETED_INTERVIEWERS** when at least one of the + interviewers is inactive or deleted + + * **END_DATE_BEFORE_START_DATE** when end date of the timeslot is + before start date + + * **NON_EXISTING_INTERVIEWERS** when at least one of the + interviewers does not exist + '500': + $ref: '#/components/responses/ServerError' + tags: + - timeslots + summary: Creates a timeslot + operationId: timeslots.create + parameters: + - $ref: '#/components/parameters/InterviewId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Timeslot' + description: Timeslot to be added + required: true + security: + - key: [] + - oauth: + - interviews_write + /interviews/{interviewId}/timeslots/{timeslotId}: + parameters: + - $ref: '#/components/parameters/InterviewId' + - $ref: '#/components/parameters/TimeslotId' + get: + responses: + '200': + description: Timeslot + content: + application/json: + schema: + $ref: '#/components/schemas/Timeslot' + '403': + description: Forbidden to access a timeslot + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **INTERVIEW_NOT_FOUND** when no interview with given id + * **TIMESLOT_NOT_FOUND** when no timeslot with given id + '500': + $ref: '#/components/responses/ServerError' + tags: + - timeslots + summary: Retrieves a timeslot + operationId: timeslots.get + security: + - key: [] + - oauth: + - interviews_read + patch: + responses: + '204': + description: Timeslot updated + '400': + description: Missing data in timeslot object + '403': + description: Forbidden to update a timeslot + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **INTERVIEW_NOT_FOUND** when no interview with given id + * **TIMESLOT_NOT_FOUND** when no timeslot with given id + '422': + description: > + When input validation fails or with codes: + + * **INACTIVE_OR_DELETED_INTERVIEWERS** when at least one of the + interviewers is inactive or deleted + + * **END_DATE_BEFORE_START_DATE** when end date of the timeslot is + before start date + + * **NON_EXISTING_INTERVIEWERS** when at least one of the + interviewers does not exist + '500': + $ref: '#/components/responses/ServerError' + tags: + - timeslots + summary: Modifies a timeslot + operationId: timeslots.update + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Timeslot' + description: Timeslot to be updated + required: true + security: + - key: [] + - oauth: + - interviews_write + delete: + responses: + '204': + description: Timeslot deleted + '403': + description: Forbidden to delete a timeslot + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **INTERVIEW_NOT_FOUND** when no interview with given id + * **TIMESLOT_NOT_FOUND** when no timeslot with given id + '409': + description: | + with codes: + * **CANNOT_DELETE_LAST_TIMESLOT** when cannot delete last timeslot + '500': + $ref: '#/components/responses/ServerError' + tags: + - timeslots + summary: Deletes a timeslot + operationId: timeslots.delete + security: + - key: [] + - oauth: + - interviews_write + /interviews/{interviewId}/candidate/status: + parameters: + - $ref: '#/components/parameters/InterviewId' + put: + responses: + '204': + description: Status successfully changed + '403': + description: Forbidden to change candidate's status + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **INTERVIEW_NOT_FOUND** when no interview with given id + '422': + description: When input validation fails + '500': + $ref: '#/components/responses/ServerError' + tags: + - statuses + summary: Changes a candidate's status. + operationId: statuses.candidate.put + deprecated: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AttendeeStatus' + description: New candidate's status + required: true + security: + - key: [] + - oauth: + - interviews_write + /interviews/{interviewId}/timeslots/{timeslotId}/interviewers/{userId}/status: + parameters: + - $ref: '#/components/parameters/InterviewId' + - $ref: '#/components/parameters/TimeslotId' + - $ref: '#/components/parameters/UserId' + put: + responses: + '204': + description: Status successfully changed + '403': + description: Forbidden to change interviewer's status + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **INTERVIEW_NOT_FOUND** when no interview with given id * + **TIMESLOT_NOT_FOUND** when no timeslot with given id * + **NON_EXISTING_INTERVIEWERS** when no interviewer with given id + exists in timeslot + '422': + description: When input validation fails + '500': + $ref: '#/components/responses/ServerError' + tags: + - statuses + summary: Changes a interviewer's status in given timeslot + operationId: statuses.interviewer.put + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AttendeeStatus' + description: New interviewer's status + required: true + security: + - key: [] + - oauth: + - interviews_write + /interviews/{interviewId}/timeslots/{timeslotId}/candidateStatus: + parameters: + - $ref: '#/components/parameters/InterviewId' + - $ref: '#/components/parameters/TimeslotId' + put: + summary: Changes a candidate's status in given timeslot + operationId: statuses.timeslot-candidate.put + tags: + - statuses + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AttendeeStatus' + description: New candidate's status + required: true + responses: + '204': + description: Candidate status in a timeslot is successfully changed + '403': + description: Forbidden to change candidates's status in a timeslot + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **INTERVIEW_NOT_FOUND** when no interview with given id * + **TIMESLOT_NOT_FOUND** when no timeslot with given id + '422': + description: When input validation fails + '500': + $ref: '#/components/responses/ServerError' + security: + - key: [] + - oauth: + - interviews_write + /jobs/{jobId}/positions: + parameters: + - $ref: '#/components/parameters/jobId' + get: + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: Job's positions + content: + application/json: + schema: + $ref: '#/components/schemas/JobPositions' + '403': + description: Job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - jobs + summary: Positions for a job + operationId: jobs.positions.all + security: + - key: [] + - oauth: + - jobs_read + post: + responses: + '201': + description: Created position + content: + application/json: + schema: + $ref: '#/components/schemas/JobPosition' + '403': + description: | + with codes + * **APPROVAL_PROCESS_ENABLED** when approval process is enabled + * **PERMISSION_DENIED** when job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - jobs + summary: Create a new position for a job + operationId: jobs.positions.create + security: + - key: [] + - oauth: + - jobs_manage + requestBody: + $ref: '#/components/requestBodies/JobPositionInput' + /jobs/{jobId}/positions/{positionId}: + parameters: + - $ref: '#/components/parameters/jobId' + - $ref: '#/components/parameters/positionId' + get: + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: Found position + content: + application/json: + schema: + $ref: '#/components/schemas/JobPosition' + '403': + description: Job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Position not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - jobs + summary: Get a single position + operationId: jobs.positions.get + security: + - key: [] + - oauth: + - jobs_read + put: + responses: + '201': + description: Updated position + content: + application/json: + schema: + $ref: '#/components/schemas/JobPosition' + '403': + description: | + with codes + * **APPROVAL_PROCESS_ENABLED** when approval process is enabled + * **PERMISSION_DENIED** when job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Position not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - jobs + summary: Update position + operationId: jobs.positions.update + security: + - key: [] + - oauth: + - jobs_manage + requestBody: + $ref: '#/components/requestBodies/JobPositionInput' + delete: + responses: + '204': + description: Position successfully removed + '400': + description: >- + with code **POSITION_ASSIGNED** when position has candidate already + assigned and cannot be removed + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: | + with codes + * **APPROVAL_PROCESS_ENABLED** when approval process is enabled + * **PERMISSION_DENIED** when job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Position not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - jobs + summary: Delete position + operationId: jobs.positions.remove + security: + - key: [] + - oauth: + - jobs_manage + /jobs/{jobId}/jobads: + parameters: + - $ref: '#/components/parameters/jobId' + get: + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: Job's job ads + content: + application/json: + schema: + $ref: '#/components/schemas/JobAds' + '404': + description: Job not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - jobs + summary: Find and list job ads for a given job + operationId: jobs.jobads.all + security: + - key: [] + - oauth: + - jobs_read + post: + responses: + '200': + description: Created job ad. + content: + application/json: + schema: + $ref: '#/components/schemas/JobAdItem' + '400': + description: > + with codes + + * **JOB_AD_LIMIT_REACHED** when job add limit (100 per job) is + reached + + * **PROPERTY_INVALID** when one of job ad attribute contains invalid + characters + '404': + description: Job not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - jobs + summary: Create a new job ad + operationId: jobs.jobads.create + security: + - key: [] + - oauth: + - jobs_manage + requestBody: + $ref: '#/components/requestBodies/JobAdContent' + /jobs/{jobId}/jobads/{jobAdId}: + parameters: + - $ref: '#/components/parameters/jobId' + - $ref: '#/components/parameters/jobAdId' + get: + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: Job ad + content: + application/json: + schema: + $ref: '#/components/schemas/JobAdItem' + '404': + description: Job or job ad not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - jobs + summary: Get a job ad + operationId: jobs.jobads.get + security: + - key: [] + - oauth: + - jobs_read + put: + responses: + '200': + description: Updated job ad + content: + application/json: + schema: + $ref: '#/components/schemas/JobAdItem' + '400': + description: > + with code + + * **PROPERTY_INVALID** when one of job ad attribute contains invalid + characters + '404': + description: Job or job ad not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Enables you to update an existing job ad. + + NOTE: In order for a job ad changes to be reflected on internal sources + (Career Sites, Job Widgets etc.) and Job Aggregators, you need to + Publish the job ad after making an update. + tags: + - jobs + summary: Update a job ad + operationId: jobs.jobads.update + security: + - key: [] + - oauth: + - jobs_manage + requestBody: + $ref: '#/components/requestBodies/JobAdContent' + /jobs/{jobId}/jobads/{jobAdId}/postings: + parameters: + - $ref: '#/components/parameters/jobId' + - $ref: '#/components/parameters/jobAdId' + post: + responses: + '202': + description: Posting scheduled + content: + application/json: + schema: + $ref: '#/components/schemas/JobAdPublicationScheduled' + '400': + description: > + with code + + * **PUBLISHED_JOB_AD_LIMIT_REACHED** when company's limit for + published job ads has been reached + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: | + with code + * **ACCESS_FORBIDDEN** when user is not authorize to publish a job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with code + + * **JOB_NOT_POSTED** when default job ad for the job has not been + published + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + * **JOBAD_NOT_FOUND** when job ad has not been found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Publishes a job ad to internal sources (Career Pages, Job Widget, + Facebook App, WordPress Plugin, Posting API) and optionally to all free + job aggregators. + + + By default it's set to publish to job aggregators + + + It reflects a Publish action available in the SmartRecruiters UI. + + + Note: Internal sources depend on a company's payment plan. + tags: + - jobs + summary: Publishes a job ad + operationId: jobs.jobads.postings.create + security: + - key: [] + - oauth: + - jobs_manage + requestBody: + $ref: '#/components/requestBodies/Publication' + get: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/PublicationList' + '403': + description: > + with code + + * **ACCESS_FORBIDDEN** when user is not authorized to access job ad + postings + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + * **JOBAD_NOT_FOUND** when job ad has not been found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: List publications for a job ad + tags: + - jobs + summary: List publications for a job ad + operationId: jobs.jobads.postings.all + security: + - key: [] + - oauth: + - jobs_read + parameters: + - $ref: '#/components/parameters/language' + - in: query + description: >- + publication status filter; when omitted, defaults to 'true' (only + active publications are returned); 'false' returns active and + inactive publications + name: activeOnly + required: false + schema: + type: boolean + default: true + delete: + responses: + '202': + description: Unpost scheduled + content: + application/json: + schema: + $ref: '#/components/schemas/JobAdUnpublishScheduled' + '401': + description: > + with code + + * **ACCESS_FORBIDDEN** when user is not authorized to unpublish job + ad + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + * **JOBAD_NOT_FOUND** when job ad has not been found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Unpublishes a job ad from all sources. + + + **Unpublishing a default job ad will unpublish all other job ads within + that job.** + tags: + - jobs + summary: Unpublish a job ad + operationId: jobs.jobads.postings.unpublish + security: + - key: [] + - oauth: + - jobs_manage + /jobs/{jobId}/publication: + parameters: + - $ref: '#/components/parameters/jobId' + post: + responses: + '204': + description: '' + '400': + description: > + with code + + * **PUBLISHED_JOB_AD_LIMIT_REACHED** when company's limit for + published job ads has been reached + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: > + with code + + * **UNAUTHORIZED_TO_ACCESS_JOB** - when user is not authorized to + access the job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with code + + * **NOT_AUTHORIZED_TO_PUBLISH_JOB** - when user is not authorized to + publish the job or approval process for the job is required + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Publishes default job ad to internal sources and to free job + aggregators. + + + It reflects a Publish action available in the SmartRecruiters UI. + + + Note: + Internal sources: Career Pages, Job Widget, Facebook App, WordPress Plugin, Posting API depend on a company's payment plan. + tags: + - jobs + summary: Publishes a default job ad + operationId: jobs.publication.create + security: + - key: [] + - oauth: + - jobs_publications_manage + requestBody: + $ref: '#/components/requestBodies/Publication' + delete: + responses: + '204': + description: '' + '401': + description: > + with code + + * **UNAUTHORIZED_TO_ACCESS_JOB** - when user is not authorized to + access the job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unpublishes a job from all sources + tags: + - jobs + summary: Unpublishes a job from all sources + operationId: jobs.publication.unpublish + security: + - key: [] + - oauth: + - jobs_publications_manage + get: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/PublicationList' + '401': + description: > + with code + + * **UNAUTHORIZED_TO_ACCESS_JOB** - when user is not authorized to + access the job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Find and list publications for a job + tags: + - jobs + summary: Find and list publications for a job + operationId: jobs.publication.all + security: + - key: [] + - oauth: + - jobs_read + parameters: + - $ref: '#/components/parameters/language' + - in: query + description: >- + publication status filter; defaults to 'true' (only active + publications are returned); 'false' returns active and inactive + publications + name: activeOnly + required: false + schema: + type: boolean + default: true + /jobs/{jobId}/hiring-team: + parameters: + - $ref: '#/components/parameters/jobId' + get: + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: Hiring team members + content: + application/json: + schema: + $ref: '#/components/schemas/HiringTeamMembers' + '401': + description: Job access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get hiring team of a job with a given id. + tags: + - jobs + summary: Get hiring team of a job with a given id. + operationId: jobs.hiring-team.get + security: + - key: [] + - oauth: + - jobs_read + post: + responses: + '200': + description: Added hiring team member + content: + application/json: + schema: + $ref: '#/components/schemas/HiringTeamMemberResponse' + '400': + description: | + with code + * **USER_NOT_FOUND** when user with given id does not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Job access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: User is already a member of the hiring team + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Add hiring team member of a job with a given id + tags: + - jobs + summary: Add hiring team member of a job with a given id. + operationId: jobs.hiring-team.add + security: + - key: [] + - oauth: + - jobs_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/HiringTeamMember' + description: HiringTeamMember object + /jobs/{jobId}/hiring-team/{userId}: + parameters: + - $ref: '#/components/parameters/jobId' + - in: path + description: user identifier + name: userId + required: true + schema: + type: string + delete: + responses: + '204': + description: '' + '400': + description: | + with code + * **INVALID_HIRING_TEAM_STATE** when removing the last hiring + team member. Each hiring team should have at least one member. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Job access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: User is not a member of the hiring team + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Removes hiring team member of a job with a given id. + tags: + - jobs + summary: Removes hiring team member of a job with a given id. + operationId: jobs.hiring-team.remove + security: + - key: [] + - oauth: + - jobs_manage + /jobs/{jobId}/note: + parameters: + - $ref: '#/components/parameters/jobId' + get: + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: Job note. + content: + application/json: + schema: + $ref: '#/components/schemas/JobNote' + '401': + description: Job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Job note not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - jobs + summary: Get note of a job. + operationId: jobs.notes.get + security: + - key: [] + - oauth: + - jobs_read + put: + responses: + '200': + description: Updated note. + content: + application/json: + schema: + $ref: '#/components/schemas/JobNote' + '401': + description: Job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Update note of a job. + tags: + - jobs + summary: Update note of a job. + operationId: jobs.notes.update + security: + - key: [] + - oauth: + - jobs_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/JobNote' + required: true + /jobs/{jobId}/headcount: + parameters: + - $ref: '#/components/parameters/jobId' + patch: + description: Update job headcount. + tags: + - jobs + summary: Update job headcount. + operationId: jobs.headcount.update + security: + - key: [] + - oauth: + - jobs_manage + responses: + '202': + description: Accepted headcount update request + content: + application/json: + schema: + $ref: '#/components/schemas/HeadcountUpdateAccepted' + '400': + description: > + with codes + + * **CANNOT_START_APPROVAL_PROCESS** when approval process cannot be + started + + * **INVALID_SALARY_RANGE** when salary range is not valid + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: | + with codes + * **PERMISSION_DENIED** when job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with codes + + * **APPROVAL_PROCESS_NOT_ENABLED** when approval process is not + enabled + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/HeadcountPatchRequest' + required: true + /jobs: + get: + responses: + '200': + description: >- + Jobs matching search criteria. | Note that location returned by this + endpoint will **not** provide latitude and longitude. + content: + application/json: + schema: + $ref: '#/components/schemas/Jobs' + headers: + Link: + schema: + type: string + description: > + Links to related resources, in the format defined by + + [RFC 5988](https://tools.ietf.org/html/rfc5988#section-5). + + This will include a link with relation type `next` to the + + next page (containing `pageId` query parameter), if there is a + next page. + '400': + description: | + with codes + * **INVALID_PAGE_ID** - provided page id is invalid + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Search jobs by params. + tags: + - jobs + summary: Search jobs + operationId: jobs.all + security: + - key: [] + - oauth: + - jobs_read + parameters: + - $ref: '#/components/parameters/language' + - in: query + description: >- + full-text search query based on a job title; case insensitive; e.g. + java developer + name: q + required: false + schema: + type: string + - in: query + description: number of elements to return. max value is 100 + name: limit + required: false + schema: + type: integer + minimum: 1 + maximum: 100 + default: 10 + - in: query + description: >- + number of elements to skip while processing result; this method of + paging is very slow and is deprecated, please use `pageId` instead + name: offset + required: false + deprecated: true + schema: + type: integer + minimum: 0 + default: 0 + maximum: 10000000 + - in: query + description: >- + unique identifier for next page of jobs - returned as `nextPageId` + in previous page result. You must set `job_id` value for `sort` + parameter if you use `pageId`. + name: pageId + required: false + schema: + type: string + - in: query + description: >- + Order in which results are returned. + + - default - sorts results by creation date or by match score and + creation date if query (q) is set. Can't be used with pageId + parameter (request might not return all results) + + - job_id - sorts results by job id. The only supported sorting order + when using pageId based pagination. + name: sort + required: false + schema: + type: string + enum: + - default + - job_id + - in: query + description: >- + city filter (part of the location object); can be used repeatedly; + case sensitive; e.g. San Francisco + name: city + required: false + explode: true + schema: + type: array + items: + type: string + - in: query + description: >- + department filter (by department label); can be used repeatedly; + case sensitive; e.g. “Marketing” + name: department + required: false + explode: true + schema: + type: array + items: + type: string + - in: query + description: >- + ISO8601-formatted time boundaries for the job update time, Format: + yyyy-MM-ddTHH:mm:ss.SSSZZ + name: updatedAfter + required: false + schema: + type: string + format: date-time + - in: query + description: > + ISO8601-formatted time boundaries for the job lastActivityOn time, + Format: yyyy-MM-ddTHH:mm:ss.SSSZZ. + + lastActivityOn is updated when job is edited, new candidates apply + or job is published. + name: lastActivityAfter + required: false + schema: + type: string + format: date-time + - in: query + description: | + Exceptions to the language code ISO format: + * "en-GB" - "English - English (UK)" + * "es-MX" - "Spanish - español (México)" + * "fr-CA" - "French - français (Canada)" + * "pt-BR" - "Portugal - português (Brasil)" + * "zh-TW" - "Chinese (Traditional) - 中文 (香港)" + * "zh-CN" - "Chinese (Simplified) - 中文 (简体)" + + + Value "pt-PT" is deprecated and will not work, use "pt" instead. + name: language + required: false + schema: + type: string + enum: + - af + - am + - ar + - az + - bg + - bn + - ca + - cs + - cy + - da + - de + - el + - en + - en-GB + - es + - es-MX + - et + - eu + - fa + - fi + - fil + - fr + - fr-CA + - ga + - gl + - gu + - he + - hi + - hr + - hu + - hy + - id + - is + - it + - ja + - ka + - km + - kn + - ko + - lo + - lt + - lv + - ml + - mn + - mr + - ms + - ne + - nl + - 'no' + - pl + - pt + - pt-BR + - ro + - ru + - si + - sk + - sl + - sr + - sv + - sw + - ta + - te + - tr + - uk + - ur + - vi + - zh-CN + - zh-TW + - zu + - in: query + description: | + Status of a job + name: status + required: false + schema: + type: string + enum: + - CREATED + - SOURCING + - FILLED + - INTERVIEW + - OFFER + - CANCELLED + - ON_HOLD + - in: query + description: | + Posting status of a job + name: postingStatus + required: false + schema: + type: string + enum: + - PUBLIC + - INTERNAL + - NOT_PUBLISHED + - PRIVATE + post: + responses: + '201': + description: Created job + content: + application/json: + schema: + $ref: '#/components/schemas/JobDetails' + '400': + description: > + with codes + + * **DEPARTMENT_NOT_FOUND** when provided department does not exist, + + * **INDUSTRY_NOT_FOUND** when provided industry does not exist, + + * **FUNCTION_NOT_FOUND** when provided function does not exist, + + * **TYPE_OF_EMPLOYMENT_NOT_FOUND** when provided type of employment + does not exist, + + * **JOB_AD_LANGUAGE_NOT_FOUND** when provided job ad language does + not exist, + + * **EEO_CATEGORY_NOT_FOUND** when provided eeo category does not + exist, + + * **EXPERIENCE_LEVEL_NOT_FOUND** when provided experience level does + not exist, + + * **CITY_NOT_FOUND** when provided city does not exist, + + * **INVALID_GEO_DATA** when latitude or longitude parameters are + invalid + + * **JOB_PROPERTY_REQUIRED** when some job property is required to + create job, + + * **JOB_PROPERTY_PARENT_VALUE_MISSING** when job property is set but + value for its parent is missing, + + * **INVALID_JOB_PROPERTY_VALUE_ID** when provided job property value + id does not exist for required property, + + * **INVALID_JOB_PROPERTY_VALUE_TYPE** when invalid value type is + used for job property, + + * **JOB_PROPERTY_VALUE_NOT_AVAILABLE_FOR_SELECTED_PARENT_VALUE** + when job property's value is not available for selected parent + value, + + * **VALUE_INACTIVE** when job property's value is not active and + cannot be set. + + * **INVALID_TEXT_FORMAT** when job property's value contains invalid + text + + * **INVALID_BRAND_VALUE** when provided brand value is invalid + + * **TYPE_OF_EMPLOYMENT_NOT_ALLOWED** when provided type of + employment is not allowed in country + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: | + with codes + * **JOB_TEMPLATES_MANAGEMENT_FORBIDDEN** when not allowed to create + job templates. + * **PERMISSION_DENIED** when job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: > + with code + + * **REF_NUMBER_ALREADY_EXISTS** when provided ref number already + exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Input validation fails + description: >- + Create a new job. Ignores all nonexistent job properties and job + properties values. + tags: + - jobs + summary: Create a new job + operationId: jobs.create + security: + - key: [] + - oauth: + - jobs_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/JobInput' + description: Job object that needs to be created + /jobs/{jobId}: + parameters: + - $ref: '#/components/parameters/jobId' + get: + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: Job + content: + application/json: + schema: + $ref: '#/components/schemas/JobDetails' + '401': + description: Job access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get content of a job with a given id. + tags: + - jobs + summary: Get content of a job with a given id. + operationId: jobs.get + security: + - key: [] + - oauth: + - jobs_read + patch: + responses: + '200': + description: Updated job + content: + application/json: + schema: + $ref: '#/components/schemas/JobDetails' + '400': + description: > + with codes + + * **DEPARTMENT_NOT_FOUND** when provided department does not exist, + + * **INDUSTRY_NOT_FOUND** when provided industry does not exist, + + * **FUNCTION_NOT_FOUND** when provided function does not exist, + + * **TYPE_OF_EMPLOYMENT_NOT_FOUND** when provided type of employment + does not exist, + + * **JOB_AD_LANGUAGE_NOT_FOUND** when provided job ad language does + not exist, + + * **EEO_CATEGORY_NOT_FOUND** when provided eeo category does not + exist, + + * **JOB_PROPERTY_REQUIRED** when some job property is required, + + * **INVALID_JOB_PROPERTY_VALUE_ID** when provided job property value + id does not exist for required property, + + * **INVALID_JOB_PROPERTY_VALUE_TYPE** when invalid value type is + used for job property, + + * **VALUE_INACTIVE** when job property's value is not active and + cannot be set. + + * **INVALID_TEXT_FORMAT** when job property's value contains invalid + text + + * **INVALID_BRAND_VALUE** when provided brand value is invalid + + * **TYPE_OF_EMPLOYMENT_NOT_ALLOWED** when provided type of + employment is not allowed in country + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Job access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with code + + * **JOB_TEMPLATES_MANAGEMENT_FORBIDDEN** when not allowed to change + job to a job template. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Input validation fails + description: >- + Update a job. All attributes that are used when creating a job can be + used. Ignores all nonexistent job properties and job properties values. + tags: + - jobs + summary: Update a job + operationId: jobs.patch + security: + - key: [] + - oauth: + - jobs_manage + requestBody: + $ref: '#/components/requestBodies/JSONPatch' + put: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JobDetails' + '400': + description: > + with codes + + * **DEPARTMENT_NOT_FOUND** when provided department does not exist, + + * **INDUSTRY_NOT_FOUND** when provided industry does not exist, + + * **FUNCTION_NOT_FOUND** when provided function does not exist, + + * **TYPE_OF_EMPLOYMENT_NOT_FOUND** when provided type of employment + does not exist, + + * **JOB_AD_LANGUAGE_NOT_FOUND** when provided job ad language does + not exist, + + * **EEO_CATEGORY_NOT_FOUND** when provided eeo category does not + exist, + + * **JOB_PROPERTY_REQUIRED** when some job property is required to + create job, + + * **INVALID_JOB_PROPERTY_VALUE_ID** when provided job property value + id does not exist for required property, + + * **INVALID_JOB_PROPERTY_VALUE_TYPE** when invalid value type is + used for job property, + + * **VALUE_INACTIVE** when job property's value is not active and + cannot be set. + + * **INVALID_TEXT_FORMAT** when job property's value contains invalid + text + + * **INVALID_BRAND_VALUE** when provided brand value is invalid + + * **TYPE_OF_EMPLOYMENT_NOT_ALLOWED** when provided type of + employment is not allowed in country + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Job access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with code + + * **JOB_TEMPLATES_MANAGEMENT_FORBIDDEN** when not allowed to create + job templates. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Input validation fails + description: >- + Enables you to update job and it's jobAd. This operation requires + passing a job id within path and job's new state within body of the PUT + request. Ignores all nonexistent job properties and job properties + values. However jobAd and all it's properties need to be provided. All + jobAd's properties will be removed if not provided. Returns an updated + job with jobAd. + tags: + - jobs + summary: Updates job + operationId: jobs.update + security: + - key: [] + - oauth: + - jobs_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/JobInput' + description: Job that needs to be updated + /jobs/{jobId}/status: + parameters: + - $ref: '#/components/parameters/jobId' + put: + responses: + '201': + description: Updated job status + content: + application/json: + schema: + $ref: '#/components/schemas/JobStatusUpdate' + '403': + description: Job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Job not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - jobs + summary: Updates job status + operationId: jobs.status.update + security: + - key: [] + - oauth: + - jobs_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/JobStatusUpdate' + required: true + /jobs/{jobId}/status/history: + parameters: + - $ref: '#/components/parameters/jobId' + get: + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: Job status history + content: + application/json: + schema: + $ref: '#/components/schemas/JobStatusHistory' + '401': + description: Job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - jobs + summary: Job status history + operationId: jobs.status.history.get + security: + - key: [] + - oauth: + - jobs_read + /jobs/{jobId}/approvals/latest: + parameters: + - $ref: '#/components/parameters/jobId' + get: + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: Job details of latest approval request + content: + application/json: + schema: + $ref: '#/components/schemas/JobApproval' + '401': + description: Job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with codes + + * **NO_ACCESS_TO_APPROVALS** when not permitted to access job + approvals + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes + * **APPROVALS_NOT_FOUND** There is no approval for current job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - jobs + summary: Get latest approval request for given job + operationId: jobs.approvals.latest + security: + - key: [] + - oauth: + - jobs_read + /job-applications/{jobApplicationId}: + parameters: + - $ref: '#/components/parameters/JobApplicationId' + get: + responses: + '200': + description: Job application + content: + application/json: + schema: + $ref: '#/components/schemas/JobApplication' + '400': + description: | + with codes: + * **INVALID_JOB_APPLICATION_ID** when invalid jobApplicationId + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **JOB_APPLICATION_NOT_FOUND** when job application not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get a job application for given job application ID. + operationId: job-applications.getById + tags: + - job-applications + summary: Get a job application + security: + - key: [] + - oauth: + - job_applications_read + /messages/shares: + post: + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/MessageDetails' + '400': + description: > + with codes: + + * **INVALID_VISIBILITY_OPTIONS** when specifying openNote and + everyone flag set to true in the same time, + + * **JOB_NOT_FOUND** when sharing with hiring team of jobs that do + not exist, + + * **NO_ACCESS_TO_CANDIDATE** when tagging candidate you do not have + access to, + + * **MENTIONED_USERS_NOT_FOUND** when mentioning users that do not + exist, + + * **SHARED_WITH_USERS_NOT_FOUND** when sharing with users that do + not exist, + + * **TOO_MANY_RECIPIENTS**, when more than 100 message recipients in + total (mentioned directly or being a part of mentioned hiring teams) + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + How does it work: + + * In **content** field, provide a text to be shared. + + * @-mention users to send them an email + * In **content** field use **@[USER:id]** to mention a User, e.g. @[USER:324132421] + * Email responses are added as comments to your update + + * \#-tag candidates to link updates to their profiles + * In **content** field use **#[CANDIDATE:id]** to tag a candidate, e.g. #[CANDIDATE:9847954623] + * Use **shareWith** to share a feed update with individuals, hiring + teams or everyone + * In **users** field, provide an array of User IDs with which you want to share, e.g. "users": ["12343542356","12343542357"]. + * In **hiringTeamOf** field, provide an array of Job IDs, this will share message with a full hiring team of those jobs, e.g. "hiringTeamOf": ["123423432322","123423432324"]. + * **everyone** flag allows sharing with everyone in a company. If not provided, defaults to **false**. + * **openNote** flag allows sharing with everyone in a company that has access to the candidate. If not provided, defaults to **false** + tags: + - messages + summary: >- + Shares new messages on Hireloop with Users, Hiring Teams or Everyone and + sends emails. + operationId: messages.shares.create + security: + - key: [] + - oauth: + - messages_write + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Message' + description: Message to post + /messages/shares/{id}: + delete: + responses: + '204': + description: Message successfully deleted + '403': + description: No permission to delete a message + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Message not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Delete a message with a given id. Deleted message is no longer visible + on Hireloop. + tags: + - messages + summary: Delete a message + operationId: messages.shares.delete + security: + - key: [] + - oauth: + - messages_manage + parameters: + - $ref: '#/components/parameters/MessageId' + /messages: + get: + responses: + '200': + description: Messages successfully fetched + content: + application/json: + schema: + $ref: '#/components/schemas/MessagesView' + headers: + Link: + schema: + type: string + description: > + Links to related resources, in the format defined by + + [RFC 5988](https://tools.ietf.org/html/rfc8288#section-3). + + This will include a link with relation type `next` to the + + next page (containing `pageId` query parameter), if there is a + next page. + '400': + description: > + with codes: + + * **CANDIDATE_NOT_FOUND** when candidate with given id does not + exist + + * **JOB_NOT_FOUND** when job with given id does not exist + + * **APPLICATION_NOT_FOUND** when candidate does not have application + for given job + '403': + description: No permission to access messages + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Search for messages of given candidate. Use jobId parameter to filter + results to messages only for specific job application. Accessible only + for users with ADMINISTRATOR role. + tags: + - messages + summary: Fetch messages + operationId: messages.fetch + security: + - key: [] + - oauth: + - messages_read + parameters: + - $ref: '#/components/parameters/CandidateId' + - $ref: '#/components/parameters/JobId' + - $ref: '#/components/parameters/PageId' + - $ref: '#/components/parameters/Limit' + /candidates/{id}/jobs/{jobId}/offers: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + get: + responses: + '200': + description: Candidate's offers + content: + application/json: + schema: + $ref: '#/components/schemas/Offers' + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: | + with code **NO_ACCESS_TO_OFFERS** when not permitted to see offers + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Offers not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - offers + summary: Get candidate's offers + operationId: candidates.offers.all + security: + - key: [] + - oauth: + - candidates_offers_read + /candidates/{id}/jobs/{jobId}/offers/{offerId}: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + get: + responses: + '200': + description: Candidate's offer + content: + application/json: + schema: + $ref: '#/components/schemas/Offer' + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: | + with code **NO_ACCESS_TO_OFFERS** when not permitted to see offers + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Offer not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - offers + summary: Get candidate's offer + operationId: candidates.offers.get + security: + - key: [] + - oauth: + - candidates_offers_read + parameters: + - in: path + description: Identifier of a Offer + name: offerId + required: true + schema: + type: string + /candidates/{id}/jobs/{jobId}/offers/{offerId}/approvals/latest: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + get: + responses: + '200': + description: Latest approval request for given offer + content: + application/json: + schema: + $ref: '#/components/schemas/ApprovalRequest' + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with code + + * **NO_ACCESS_TO_OFFERS** when not permitted to see offers * + **NO_ACCESS_TO_APPROVALS** when not permitted to access offer + approvals + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + * **OFFERS_NOT_FOUND** + * **APPROVALS_NOT_FOUND** + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - offers + summary: Get latest approval request for candidate's offer + operationId: candidates.offers.approvals.latest + security: + - key: [] + - oauth: + - candidates_offers_read + parameters: + - in: path + description: Identifier of a Offer + name: offerId + required: true + schema: + type: string + /offers: + get: + responses: + '200': + description: Offers matching search criteria. + content: + application/json: + schema: + $ref: '#/components/schemas/Offers' + '403': + description: | + with code **NO_ACCESS_TO_OFFERS** when not permitted to see offers + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + default: + description: List of found offers + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiListResult' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiListResult' + tags: + - offers + summary: Search offers by criteria + operationId: searchOffers + security: + - key: [] + parameters: + - name: limit + in: query + description: >- + number of offers to return. max number of offers returned by single + call is 100 + schema: + type: integer + format: int32 + - name: offset + in: query + description: number of offers to skip while processing result + schema: + type: integer + format: int32 + - name: status + in: query + description: >- + offer status; available values are: INACTIVE, UNDER_REVIEW, ACTIVE, + REJECTED + schema: + type: string + - name: q + in: query + description: >- + full text query. will match offers with name and description + matching query string + schema: + type: string + - name: postingId + in: query + description: >- + id of a job posting; allows getting offer information using Posting + Id coming from Job Board API; not relevant for Assessment vendors + schema: + type: string + description: >- + Enables you to get a list of existing offers. The number of offers + returned as part of the list can be modified using the offset and limit + parameters. These results will be sorted using lastUpdateDate. + deprecated: true + post: + tags: + - offers + summary: Create offer + description: >- + Enables you to insert new offers. This operation requires passing an Offer + object as part of a POST request. + operationId: create + requestBody: + description: >- + Offer + object that needs to be passed over. Please see the Model Schema on + the right. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiOffer' + responses: + default: + description: New offer created + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiOffer' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiOffer' + deprecated: true + security: + - key: [] + /offers/{offerId}/documents: + get: + responses: + '200': + description: List of documents related to sent offer. + content: + application/json: + schema: + $ref: '#/components/schemas/OfferDocumentsList' + '400': + description: Malformed request. ID format is invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Offer not found or lack of access to the offer. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Offer has not been sent to the candidate. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Offer was sent with an unsupported provider. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - offers + summary: Get a list of documents related to sent offer. + operationId: offers.documents.getDocumentsList + security: + - key: [] + - oauth: + - candidates_offers_read + parameters: + - in: path + description: Identifier of an offer. + name: offerId + required: true + schema: + type: string + /offers/{offerId}/documents/{documentId}: + get: + tags: + - offers + summary: Get a given document in a given sent offer + operationId: offers.documents.getDocument + parameters: + - name: offerId + description: Identifier of an offer. + in: path + required: true + schema: + type: string + - name: documentId + description: Identifier of a document. + in: path + required: true + schema: + type: string + responses: + '200': + description: Requested file. + content: + application/octet-stream: + schema: + format: binary + '400': + description: Malformed request. ID format is invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + Forbidden from downloading offer because of detected malware in + document. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Offer or document not found or lack of access. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Offer was not sent to the candidate. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Offer was sent with an unsupported provider. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - key: [] + - oauth: + - candidates_offers_read + /assessments/{assessmentOrderId}/comments/{commentId}: + get: + tags: + - comments + summary: Get comment by id + description: Getting details of a comment in a particular assessment order. + operationId: getComment + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + - name: commentId + in: path + description: unique id of an assessment comment + required: true + schema: + type: string + responses: + default: + description: Assessment comment + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentComment' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentComment' + deprecated: true + security: + - key: [] + /assessments/{assessmentOrderId}/comments: + get: + tags: + - comments + summary: List comments + description: >- + Enables you to get a list of comments associated with a particular + assessment order. + operationId: listComments + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + - name: limit + in: query + description: >- + number of comments to return. max number of comments returned by + single call is 100 + schema: + type: string + - name: offset + in: query + description: number of comments to skip while processing result + schema: + type: string + responses: + default: + description: List of assessment comments + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentCommentListResult' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentCommentListResult' + deprecated: true + security: + - key: [] + post: + tags: + - comments + summary: Add new comment + description: Adding new comment to an assessment order. + operationId: insertComment + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + requestBody: + description: >- + Body object that should contain author information (it's not required + but this will be displayed as author of the message). Message is + required (which will be displayed to SmartRecruiters user). Please see + the Model Schema on the right. + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiCommentRequest' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiCommentRequest' + required: true + responses: + default: + description: New assessment comment added + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentComment' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentComment' + deprecated: true + security: + - key: [] + /assessments/{assessmentOrderId}/results/{resultId}/attachments/{attachmentId}: + get: + tags: + - attachments + summary: Get assessment attachment + description: Enables you to get details of attachments in a particular assessment. + operationId: getAttachment + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + - name: resultId + in: path + description: unique result id + required: true + schema: + type: string + - name: attachmentId + in: path + description: unique id of an attachment + required: true + schema: + type: string + responses: + default: + description: Assessment attachment + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentAttachment' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentAttachment' + deprecated: true + security: + - key: [] + post: + tags: + - attachments + summary: Update assessment attachment + description: >- + Enables you to update ( replace ) files already submitted to assessment + result. + operationId: updateAttachment + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + - name: resultId + in: path + description: unique result id + required: true + schema: + type: string + - name: attachmentId + in: path + description: unique id of an attachment + required: true + schema: + type: string + requestBody: + description: >- + Attachment file - we accept only PDF files with max size: 20 * 1024 * + 1024. + content: + multipart/form-data: + schema: + $ref: '#/components/schemas/ApiAttachment' + required: true + responses: + default: + description: Assessment attachment updated + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentAttachment' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentAttachment' + deprecated: true + security: + - key: [] + /assessments/{assessmentOrderId}/results/{resultId}/attachments: + get: + tags: + - attachments + summary: List assessment results + description: >- + Enables you to get a list of attachments submitted to a particular + assessment result. + operationId: listAttachmentResults + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + - name: resultId + in: path + description: unique result id + required: true + schema: + type: string + - name: limit + in: query + description: number of elements to return. max value is 100 + schema: + type: integer + format: int32 + - name: offset + in: query + description: number of elements to skip while processing result + schema: + type: integer + format: int32 + responses: + default: + description: Assessment attachment list + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentAttachmentListResult' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentAttachmentListResult' + deprecated: true + security: + - key: [] + post: + tags: + - attachments + summary: Attach assessment results + description: Enables you to attach files to and submit a new assessment result. + operationId: insertAttachment + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + - name: resultId + in: path + description: unique result id + required: true + schema: + type: string + requestBody: + description: >- + Attachment file - we accept only PDF files with max size: 20 * 1024 * + 1024. + content: + multipart/form-data: + schema: + $ref: '#/components/schemas/ApiAttachment' + required: true + responses: + default: + description: File attached to assessment result + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentAttachment' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentAttachment' + deprecated: true + security: + - key: [] + /assessments/{assessmentOrderId}/results/{resultId}: + get: + tags: + - results + summary: Get assessment results by id + description: Enables you to get details of a particular assessment result. + operationId: getResult + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + - name: resultId + in: path + description: unique id of an assessment result + required: true + schema: + type: string + responses: + default: + description: Assessment result + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentResult' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentResult' + deprecated: true + security: + - key: [] + /assessments/{assessmentOrderId}/results: + get: + tags: + - results + summary: List assessment results + description: >- + Enables you to get a list of results submitted to a particular + assessment order. + operationId: listResults + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + - name: limit + in: query + description: number of elements to return. max value is 100 + schema: + type: integer + format: int32 + - name: offset + in: query + description: number of elements to skip while processing result + schema: + type: integer + format: int32 + responses: + default: + description: Assessment result list + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentResultListResult' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentResultListResult' + deprecated: true + security: + - key: [] + post: + tags: + - results + summary: Submit assessment results + description: Enables you to submit a new assessment result. + operationId: insertResult + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + requestBody: + description: >- + AssessmentResult + object that should contain author information (it's not required but + this will be displayed as author of the message) and score (which will + be displayed to SmartRecruiters user). Please see the Model Schema on + the right. + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentResult' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentResult' + responses: + default: + description: New assessment result submitted + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentResult' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentResult' + deprecated: true + security: + - key: [] + /assessments/{assessmentOrderId}/accept: + post: + tags: + - assessments + summary: Accept Assessment order + description: Enables you to accept an assessment order. + operationId: acceptAssessmentOrder + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + requestBody: + description: >- + Body object that should contain author information (it's not required + but this will be displayed as author of the message). Message is + required (which will be displayed to SmartRecruiters user). Please see + the Model Schema on the right. + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiCommentRequest' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiCommentRequest' + required: true + responses: + default: + description: Assessment order accepted + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrder' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrder' + deprecated: true + security: + - key: [] + /assessments/{assessmentOrderId}/complete: + post: + tags: + - assessments + summary: Complete Assessment order + description: Enables you to mark the status of an assessment order as COMPLETED. + operationId: completeAssessmentOrder + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + requestBody: + description: >- + Body object that should contain author information (it's not required + but this will be displayed as author of the message). Message is + required (which will be displayed to SmartRecruiters user). Please see + the Model Schema on the right. + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiCommentRequest' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiCommentRequest' + required: true + responses: + default: + description: Assessment order completed + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrder' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrder' + deprecated: true + security: + - key: [] + /assessments/{assessmentOrderId}: + get: + tags: + - assessments + summary: Get Assessment Order by id + description: Get Assessment Order details by ID. + operationId: getAssessmentOrder + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + responses: + default: + description: Assessment order + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrder' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrder' + deprecated: true + security: + - key: [] + /assessments: + get: + tags: + - assessments + summary: Get Assessment orders by criteria + description: Get list of Assessment Orders. + operationId: getAssessments + parameters: + - name: limit + in: query + description: number of elements to return. max value is 100 + schema: + type: integer + format: int32 + - name: offset + in: query + description: number of elements to skip while processing result + schema: + type: integer + format: int32 + - name: status + in: query + description: >- + assessment order status; available values: NEW, IN_PROGRESS, + REJECTED, COMPLETED + schema: + type: string + - name: fromDate + in: query + description: >- + createDate filter. search will return only orders created after + given date. Date format need to comply with ISO8601 format: + yyyy-MM-ddTHH:mm:ss.SSSZZ + schema: + type: string + - name: toDate + in: query + description: >- + createDate filter. search will return only orders created before + given date. Date format need to comply with ISO8601 format: + yyyy-MM-ddTHH:mm:ss.SSSZZ + schema: + type: string + - name: sortBy + in: query + description: 'sorting criteria. Available options: createDate' + schema: + type: string + - name: sortDir + in: query + description: 'sorting direction. Available options: asc, desc' + schema: + type: string + default: asc + - name: candidateUuid + in: query + description: >- + UUID of a candidate. Corresponds to candidate ID used in Customer + API + schema: + type: string + - name: jobUuid + in: query + description: UUID of a job. Corresponds to job ID used in Customer API + schema: + type: string + responses: + default: + description: Assessment order list + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrderListResult' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrderListResult' + deprecated: true + security: + - key: [] + post: + tags: + - assessments + summary: >- + insert new Assessment order - end point for testing only - it will not + create valid assessment order + operationId: insertAssessmentOrder + requestBody: + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrderRequest' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrderRequest' + responses: + default: + description: Assessment order inserted + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrder' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrder' + deprecated: true + security: + - key: [] + /assessments/{assessmentOrderId}/reject: + post: + tags: + - assessments + summary: Reject Assessment order + description: Enables you to reject an assessment order. + operationId: rejectAssessmentOrder + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + requestBody: + description: >- + Body object that should contain author information (it's not required + but this will be displayed as author of the message). Message is + required (which will be displayed to SmartRecruiters user) and should + contain details on why the order has been rejected. Please see the + Model Schema on the right. + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiCommentRequest' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiCommentRequest' + required: true + responses: + default: + description: Assessment order rejected + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrder' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrder' + deprecated: true + security: + - key: [] + /configs: + get: + tags: + - configs + summary: Fetch list of vendor configs + description: Enables you to get all specified configuration entries. + operationId: getConfigs + responses: + default: + description: Configs list + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiConfigListResult' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiConfigListResult' + deprecated: true + security: + - key: [] + post: + tags: + - configs + summary: Add new config + description: >- + Enables you to add a new config to the configs list. This operation + requires passing an instance of the Config + object with the Id and Value fields set. An update is performed if the + ID that you pass already exists. + operationId: addConfig + requestBody: + description: >- + Config + object that needs to contain Id and Value set. Please see the Model + Schema on the right. + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/Config' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Config' + responses: + default: + description: New config added + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/Config' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Config' + deprecated: true + security: + - key: [] + /configs/{configId}: + get: + tags: + - configs + summary: Get config for vendor + description: Enables you to get the config value for a given Id. + operationId: getConfig + parameters: + - name: configId + in: path + description: unique id of a config entry + required: true + schema: + type: string + responses: + default: + description: Config + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/Config' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Config' + deprecated: true + security: + - key: [] + post: + tags: + - configs + summary: Update config + description: >- + Enables you to update config in the configs list. This operation + requires passing a config id and instance of the Config + object with the Id and Value fields set. + operationId: updateConfig + parameters: + - name: configId + in: path + description: unique id of a config entry + required: true + schema: + type: string + requestBody: + description: >- + Config + object that needs to contain Id and Value set. Please see the Model + Schema on the right. + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/Config' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Config' + responses: + default: + description: Config updated + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/Config' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Config' + deprecated: true + security: + - key: [] + /offers/{offerId}: + get: + tags: + - offers + summary: Get offer by id + description: >- + Enables you to get offer details. This operation requires passing an + offer id as part of the REQUEST parameter. + operationId: getOffer + parameters: + - name: offerId + in: path + description: unique id of an offer + required: true + schema: + type: string + responses: + default: + description: Offer + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiOffer' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiOffer' + deprecated: true + security: + - key: [] + post: + tags: + - offers + summary: Update offer + description: >- + Enables you to Update existing offers. This operation requires passing + an offer id being changed and an Offer + object as part of the POST request. + operationId: update + parameters: + - name: offerId + in: path + description: unique id of an offer + required: true + schema: + type: string + requestBody: + description: >- + Offer + object that needs to be passed over. Please see the Model Schema on + the right. Required fields are: id, catalogId, name, description, + Terms. + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiOffer' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiOffer' + responses: + default: + description: Offer updated + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiOffer' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiOffer' + deprecated: true + security: + - key: [] + /offers/{offerId}/submit: + post: + tags: + - offers + summary: Submit offer + description: >- + Enables you to submit an offer for review. This operation requires + passing an offer ID as part of the REQUEST parameter. + operationId: submit + parameters: + - name: offerId + in: path + description: unique id of an offer + required: true + schema: + type: string + responses: + default: + description: Offer submitted for review + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiOffer' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiOffer' + deprecated: true + security: + - key: [] + /offers/{offerId}/withdraw: + post: + tags: + - offers + summary: Withdraw offer + description: >- + Enables you to withdrawing an offer from the marketplace. This operation + requires passing an offer id as part of a REQUEST parameter. After a + successful withdraw, the offer is not available in the marketplace + anymore. + operationId: withdraw + parameters: + - name: offerId + in: path + description: unique id of an offer + required: true + schema: + type: string + responses: + default: + description: Offer withdrawn + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiOffer' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiOffer' + deprecated: true + security: + - key: [] + /v1/companies/{companyIdentifier}/postings: + get: + responses: + '200': + description: OK + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/PostingList' + description: Lists active postings published by given company. Return PostingList + tags: + - postings + summary: Lists active postings published by given company + operationId: v1.listPostings + security: + - {} + - key: [] + parameters: + - in: header + description: Language of translation + name: accept-language + schema: + $ref: '#/components/schemas/JobAdLanguageCode' + - in: path + description: Identifier of a company + name: companyIdentifier + required: true + schema: + type: string + - in: query + description: full-text search query based on a job title, location + name: q + required: false + schema: + type: string + - in: query + description: number of elements to return. max value is 100 + name: limit + required: false + schema: + type: integer + - in: query + description: number of elements to skip while processing result + name: offset + required: false + schema: + type: integer + - in: query + description: > + Filter indicating which postings to return: + + * **PUBLIC**: response will include ONLY public postings + + * **INTERNAL**: response will include ONLY internal postings + + * **INTERNAL_OR_PUBLIC**: response will include internal postings or + public postings, but not both for a single job. If a job has both + types of postings, only internal postings will be returned. NOTE: + when selected, all postings, internal and public, will be treated as + internal. Among other things, this means that screening questions + will not be displayed, and candidates will be marked with the + EMPLOYEE label. + name: destination + required: false + schema: + type: string + enum: + - PUBLIC + - INTERNAL + - INTERNAL_OR_PUBLIC + - in: query + description: > + Filter indicating which postings to return: + + * **REMOTE**: response will include ONLY postings with remote + location type + + * **ONSITE**: response will include ONLY postings with onsite + location type + + * **ANY**: response will include ANY location type + name: locationType + required: false + schema: + type: string + enum: + - REMOTE + - ONSITE + - ANY + - in: query + description: country code filter (part of the location object) + name: country + required: false + schema: + type: string + - in: query + description: region filter (part of the location object) + name: region + required: false + schema: + type: string + - in: query + description: city filter (part of the location object) + name: city + required: false + schema: + type: string + - in: query + description: department filter (department id) + name: department + required: false + schema: + type: string + - in: query + description: > + Job ad language; accepts 2-letter ISO 639-1 language code; multiple + codes can be provided, separated by comma (",") + + Exceptions to the language code ISO format: + + * "en-GB" - "English - English (UK)" + + * "fr-CA" - "French - français (Canada)" + + * "pt-BR" - "Portugal - português (Brasil)" + + * "pt-PT" - "Portugal - português (Portugal)" + + * "zh-TW" - "Chinese (Traditional) - 中文 (香港)" + + * "zh-CN" - "Chinese (Simplified) - 中文 (简体)" + name: language + required: false + schema: + type: array + items: + $ref: '#/components/schemas/JobAdLanguageCode' + - in: query + description: | + Released after filter (ISO8601-formatted) + Format: yyyy-MM-ddTHH:mm:ss.SSSZZ + name: releasedAfter + required: false + schema: + type: string + format: date-time + - in: query + description: > + Filters postings by custom fields. Multiple custom field values can + be provided, separated by comma (","). + + Format: + custom_field.CUSTOM_FIELD_ID=CUSTOM_FIELD_VALUE1_ID,CUSTOM_FIELD_VALUE2_ID + name: customField + required: false + style: form + schema: + type: object + propertyNames: + pattern: ^custom_field\.[^\s]+$ + additionalProperties: + type: string + pattern: ^[^\s]+$ + examples: + - custom_field.52d95747e4b0ba7acb9217ea: 23aba1d4-4c81-48f7-9ae2-3ab84ee32a80 + /v1/companies/{companyIdentifier}/postings/{postingId}: + get: + responses: + '200': + description: OK + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/Posting' + description: >- + Note: In order to update content of a job posting available via the + Posting API, you need to re-post the job in SmartRecruiters application. + tags: + - postings + summary: Get posting by posting id or uuid for given company + operationId: v1.getPosting + security: + - {} + - key: [] + parameters: + - in: header + description: Language of translation + name: accept-language + schema: + $ref: '#/components/schemas/JobAdLanguageCode' + - in: path + description: Identifier of a company + name: companyIdentifier + required: true + schema: + type: string + - in: path + description: Posting identifier or uuid + name: postingId + required: true + schema: + type: string + - in: query + description: >- + sourceTypeId can be retrieved using [get + /configuration/sources](https://developers.smartrecruiters.com/reference/configurationsourcetypes-1) + endpoint. Used together with **sourceId** and **sourceSubTypeId** to + add source tracking parameter to **applyUrl**. + name: sourceTypeId + required: false + schema: + type: string + - in: query + description: >- + sourceSubTypeId can be retrieved using [get + /configuration/sources](https://developers.smartrecruiters.com/reference/configurationsourcetypes-1) + endpoint. Used together with **sourceId** and **sourceTypeId** to + add source tracking parameter to **applyUrl**. + name: sourceSubTypeId + required: false + schema: + type: string + - in: query + description: >- + sourceId can be retrieved using [get + /configuration/sources/{sourceType}/values](https://developers.smartrecruiters.com/reference/configurationsourcevaluesall-1) + endpoint. Used together with **sourceTypeId** and + **sourceSubTypeId** to add source tracking parameter to + **applyUrl**. + name: sourceId + required: false + schema: + type: string + /v1/companies/{companyIdentifier}/departments: + get: + responses: + '200': + description: OK + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/Departments' + description: List departments for given company. + tags: + - postings + summary: List departments for given company + operationId: v1.listDepartments + security: + - {} + - key: [] + parameters: + - in: header + description: Language of translation + name: accept-language + schema: + $ref: '#/components/schemas/JobAdLanguageCode' + - in: path + description: Identifier of a company + name: companyIdentifier + required: true + schema: + type: string + /files/{reportFileId}/data: + get: + tags: + - files + summary: Download report file + description: > + Use this endpoint to download a specific report file. The response + contains report data in CSV format. + + ### Note + + It is not recommended to attempt downloading large report files via Live + Docs or Internet Browser. To get a large report file, use command line + tools or native HTTP clients. + operationId: downloadReportFile + parameters: + - name: reportFileId + in: path + description: Report file identifier + required: true + schema: + type: string + responses: + '200': + description: Successful response. + content: + text/csv: + schema: + type: string + '401': + description: Returned when a request was not authenticated. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Returned when a caller is not authorized to perform the request. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Returned when there is no report file with the given ID. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - key: [] + - oauth: + - reporting_read + /files/{reportFileId}: + get: + tags: + - files + summary: Get report file + description: Use this endpoint to get a specific report file details. + operationId: getReportFile + parameters: + - name: reportFileId + in: path + description: Report file identifier + required: true + schema: + type: string + responses: + '200': + description: Successful response. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiReportFileResponse' + '401': + description: Returned when a request was not authenticated. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Returned when a caller is not authorized to perform the request. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Returned when there is no report file with the given ID. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - key: [] + - oauth: + - reporting_read + /reports/{reportId}/files/recent/data: + get: + tags: + - reports + summary: Download most recent report file + description: > + Use this endpoint to download the most recent report file for a specific + report. The response contains report data in CSV format. In order to get + a successful response, there have to be at least 1 successfully + generated report file for the report. + + ### Etags + + Along with the successful response, the `Etag` HTTP header is returned, + containing ETag identifier of the report file. In order to save + bandwidth resources, the `If-None-Match HTTP` header containing the + recently retrieved report file ETag can be passed with the request. If + there's no report file, that is newer than the one referred in the + `If-None-Match` header, the API responds with HTTP `304 Not Modified` + status code and does not provide content. + + ### Note + + It is not recommended to attempt downloading large report files via Live + Docs or Internet Browser. To get a large report file, use command line + tools or native HTTP clients. + operationId: downloadMostRecentReportFile + parameters: + - name: If-None-Match + in: header + description: Report file ETag to be compared with the most recent report file + schema: + type: string + - name: reportId + in: path + description: Report identifier + required: true + schema: + type: string + responses: + '200': + description: Successful response. + headers: + ETag: + description: Report file ETag + style: simple + schema: + type: string + content: + text/csv: + schema: + type: string + '304': + description: Returned when there's no newer report file available. + '400': + description: Returned when the report ID is invalid. + content: + text/csv;charset=utf-8: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Returned when a request was not authenticated. + content: + text/csv;charset=utf-8: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + Returned when a caller is not authorized to download the report + file. + content: + text/csv;charset=utf-8: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Returned when there is no successfully generated report file. + content: + text/csv;charset=utf-8: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - key: [] + - oauth: + - reporting_read + /reports/{reportId}/files: + get: + tags: + - reports + summary: Get report files + description: > + Use this endpoint to fetch a list of report files of a specific report. + Report files are sorted by generation date (newer report files first). + + ### Paging + + Whenever there's more data to be returned, the `nextPage` property will + contain an opaque identifier of the next page. The value can be then + passed as a page query parameter in a subsequent request. Another option + is to use the response's `Link` HTTP header, which contains a web link + to the following page, example: + + ``` + + ; + rel="link" + + ``` + operationId: getReportFiles + parameters: + - name: page + in: query + description: Opaque page identifier to be returned. + schema: + type: string + - name: limit + in: query + description: Number of entities that should be returned per page. + schema: + maximum: 1000 + minimum: 1 + type: integer + format: int32 + default: 10 + - name: reportId + in: path + description: Report identifier + required: true + schema: + type: string + responses: + '200': + description: Successful response. + headers: + Link: + description: Link to the next report files page, if available + style: simple + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/ApiReportFilesResponse' + '400': + description: >- + Returned when the report ID, page parameter or limit parameter is + invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Returned when a request was not authenticated. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Returned when a caller is not authorized to perform the request. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Returned when there is no report with the given ID. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - key: [] + - oauth: + - reporting_read + post: + tags: + - reports + summary: Generate ad-hoc report + description: >- + Use this endpoint to generate ad-hoc report. + + NOTE: Report files are generated asynchronously. Ensure the report file + status is: COMPLETED before fetching the data. To check the report file + status use the GET /reports/{reportId}/files/recent endpoint. + operationId: generateAdHocReport + parameters: + - name: reportId + in: path + description: Report identifier + required: true + schema: + type: string + responses: + '200': + description: Successful response. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiReportFileResponse' + '400': + description: >- + Returned when the report ID or the identity is invalid or the report + is already pending generation. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Returned when a request was not authenticated. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Returned when a caller is not authorized to perform the request. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Returned when there is no report with the given ID. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Returned when the report was modified concurrently. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - key: [] + - oauth: + - reporting_write + /reports/{reportId}/files/recent: + get: + tags: + - reports + summary: Get most recent report file + description: > + Use this endpoint to get the most recent report file details for a + specific report. In order to get a successful response, there have to be + at least 1 successfully generated report file for the report. + + ### Etags + + Along with the successful response, the `Etag` HTTP header is returned, + containing ETag identifier of the report file. In order to save + bandwidth resources, the `If-None-Match HTTP` header containing the + recently retrieved report file ETag can be passed with the request. If + there's no report file, that is newer than the one referred in the + `If-None-Match` header, the API responds with HTTP `304 Not Modified` + status code and does not provide content. + operationId: getMostRecentReportFile + parameters: + - name: If-None-Match + in: header + description: Report file ETag to be compared with the most recent report file + schema: + type: string + - name: reportId + in: path + description: Report identifier + required: true + schema: + type: string + responses: + '200': + description: Successful response. + headers: + ETag: + description: Report file ETag + style: simple + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/ApiReportFileResponse' + '304': + description: Returned when there's no newer report file available. + '400': + description: Returned when the report ID is invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Returned when a request was not authenticated. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Returned when a caller is not authorized to perform the request. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Returned when there is no successfully generated report file. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - key: [] + - oauth: + - reporting_read + /reports/{reportId}: + get: + tags: + - reports + summary: Get report + description: Use this endpoint to get a specific report details. + operationId: getReport + parameters: + - name: reportId + in: path + description: Report identifier + required: true + schema: + type: string + responses: + '200': + description: Successful response. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiReportResponse' + '400': + description: Returned when the report ID is invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Returned when a request was not authenticated. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Returned when a caller is not authorized to perform the request. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Returned when there is no report with the given ID. + security: + - key: [] + - oauth: + - reporting_read + /reports: + get: + tags: + - reports + summary: Get reports + description: > + Use this endpoint to fetch a list of reports. Reports are sorted by + modification date (newer reports first). + + ### Paging + + Whenever there's more data to be returned, the `nextPage` property will + contain an opaque identifier of the next page. The value can be then + passed as a page query parameter in a subsequent request. Another option + is to use the response's `Link` HTTP header, which contains a web link + to the following page, example: + + ``` + + ; + rel="link" + + ``` + operationId: getReports + parameters: + - name: page + in: query + description: Opaque page identifier to be returned. + schema: + type: string + - name: limit + in: query + description: Number of entities that should be returned per page. + schema: + maximum: 1000 + minimum: 1 + type: integer + format: int32 + default: 10 + responses: + '200': + description: Successful response. + headers: + Link: + description: Link to the next reports page, if available + style: simple + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/ApiReportsResponse' + '400': + description: Returned when the page parameter or limit parameter is invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Returned when a request was not authenticated. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Returned when a caller is not authorized to perform the request. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - key: [] + - oauth: + - reporting_read + /reviews: + get: + responses: + '200': + description: Review was retreived + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Review' + '401': + description: > + with codes: + + * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is not + authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + With code **'APPLICATION_NOT_FOUND'** when there is no application + of the candidate in a the job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - reviews + parameters: + - in: query + name: candidateId + description: ID of the candidate + required: true + schema: + $ref: '#/components/schemas/Uuid' + - in: query + name: jobId + description: ID of the job + required: true + schema: + $ref: '#/components/schemas/Uuid' + summary: Retrieves all reviews for specified candidate and job + operationId: reviews.getList + security: + - key: [] + - oauth: + - reviews_read + post: + responses: + '201': + description: Review was created + content: + application/json: + schema: + $ref: '#/components/schemas/Review' + '401': + description: > + with codes: + + * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is not + authorized to access resource + + * **REVIEWER_NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when reviewer is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden to create a review + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + When input validation fails or with codes: + + * **INVALID_OVERALL** when invalid overall + + * **NON_EXISTING_REVIEWER** when reviewer does not exist + + * **INACTIVE_OR_DELETED_REVIEWER** when reviewer is inactive or + deleted + + * **CANDIDATE_NOT_FOUND** when candidate with given id not found + + * **JOB_NOT_FOUND** when job with given id not found + + * **APPLICATION_NOT_FOUND** when application for given candidate id + and job id not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - reviews + summary: Creates a review + operationId: reviews.create + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ReviewInput' + description: Review to be created + required: true + security: + - key: [] + - oauth: + - reviews_write + /reviews/{reviewId}: + parameters: + - $ref: '#/components/parameters/ReviewId' + get: + responses: + '200': + description: Review was retreived + content: + application/json: + schema: + $ref: '#/components/schemas/Review' + '400': + description: | + with codes: + * **INVALID_REVIEW_ID** when review id is invalid + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: > + with codes: + + * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is not + authorized to access resource + + * **REVIEWER_NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when reviewer is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden to retreive a review + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **REVIEW_NOT_FOUND** when no review with given id is found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - reviews + summary: Retrieves a review + operationId: reviews.get + security: + - key: [] + - oauth: + - reviews_read + patch: + responses: + '204': + description: Review was updated + '400': + description: | + with codes: + * **INVALID_SOURCE** when review source is invalid + * **INVALID_REVIEW_ID** when review id is invalid + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: > + with codes: + + * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is not + authorized to access resource + + * **REVIEWER_NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when reviewer is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden to retreive a review + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **REVIEW_NOT_FOUND** when no review with given id is found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + When input validation fails or with codes: + + * **INVALID_OVERALL** when invalid overall + + * **NON_EXISTING_REVIEWER** when reviewer does not exist + + * **INACTIVE_OR_DELETED_REVIEWER** when reviewer is inactive or + deleted + + * **REVIEWER_ID_DOES_NOT_MATCH** when reviewer id does not match + reviewer id in review + '500': + $ref: '#/components/responses/ServerError' + tags: + - reviews + summary: Updates a review + operationId: reviews.update + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ReviewToUpdateInput' + description: Review to be updated + required: true + security: + - key: [] + - oauth: + - reviews_write + delete: + parameters: + - $ref: '#/components/parameters/ReviewerId' + responses: + '204': + description: Review was deleted + '400': + description: | + with codes: + * **INVALID_SOURCE** when review source is invalid + * **INVALID_REVIEW_ID** when review id is invalid + * **INVALID_REVIEWER_ID** when review id or employee id is invalid + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: > + with codes: + + * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is not + authorized to access resource + + * **REVIEWER_NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when reviewer is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden to retreive a review + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **REVIEW_NOT_FOUND** when no review with given id is found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + When input validation fails or with codes: + + * **NON_EXISTING_REVIEWER** when reviewer does not exist + + * **INACTIVE_OR_DELETED_REVIEWER** when reviewer is inactive or + deleted + + * **REVIEWER_ID_DOES_NOT_MATCH** when reviewer id does not match + reviewer id in review + '500': + $ref: '#/components/responses/ServerError' + tags: + - reviews + summary: Deletes a review + operationId: reviews.delete + security: + - key: [] + - oauth: + - reviews_write + /new-hires/{newHireId}: + parameters: + - $ref: '#/components/parameters/NewHireId' + get: + responses: + '200': + description: New Hire details were retrieved + content: + application/json: + schema: + $ref: '#/components/schemas/NewHire' + '401': + description: > + With codes: * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + With codes: + + * **'NEW_HIRE_NOT_FOUND'** when there is no New Hire present for + given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - new-hires + summary: Returns details for a single New Hire + operationId: new-hires.get + security: + - key: [] + - oauth: + - new_hires_read + /onboarding-processes/{onboardingProcessId}: + parameters: + - $ref: '#/components/parameters/OnboardingProcessId' + get: + responses: + '200': + description: Onboarding Process details were retrieved + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardingProcess' + '401': + description: > + With codes: * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + With codes: + + * **'ONBOARDING_PROCESS_NOT_FOUND'** when there is no Onboarding + Process for given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - onboarding-processes + summary: Returns details of a single Onboarding Process + operationId: onboarding-processes.get + security: + - key: [] + - oauth: + - onboarding_processes_read + /web-form-assignments/{webFormAssignmentId}/form-answers: + parameters: + - $ref: '#/components/parameters/WebFormAssignmentId' + get: + responses: + '200': + description: Answers submitted for Web Form Assignment were retrieved + content: + application/json: + schema: + $ref: '#/components/schemas/WebFormAnswers' + '401': + description: > + With codes: * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + With codes: + + * **'WEB_FORM_ASSIGNMENT_NOT_FOUND'** when there is no Web Form + Assignment for given id + + * **'WEB_FORM_ASSIGNMENT_ANSWERS_NOT_FOUND'** when there are no Web + Form Assignment Answers for given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - assignments-submissions + summary: Returns answers submitted for a single Web Form Assignment + operationId: web-form-assignments.form-answers.get + security: + - key: [] + - oauth: + - assignments_submissions_read + /web-form-assignments/{webFormAssignmentId}/fields-metadata: + parameters: + - $ref: '#/components/parameters/WebFormAssignmentId' + get: + responses: + '200': + description: >- + The metadata of the fields that belong to a single Web Form + Assignment was retrieved + content: + application/json: + schema: + $ref: '#/components/schemas/WebFormFieldsMetadata' + '401': + description: > + With codes: * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + With codes: + + * **'WEB_FORM_ASSIGNMENT_NOT_FOUND'** when there is no Web Form + Assignment for given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - assignments-submissions + summary: >- + Returns metadata for the fields that belong to a single Web Form + Assignment + operationId: web-form-assignments.fields-metadata.get + security: + - key: [] + - oauth: + - assignments_submissions_read + /fillable-pdf-form-assignments/{fillablePdfFormAssignmentId}/form-answers: + parameters: + - $ref: '#/components/parameters/FillablePdfFormAssignmentId' + get: + responses: + '200': + description: >- + PDF file filled with submitted answers Fillable PDF Form Assignment + was retrieved + content: + application/pdf: + schema: + type: string + format: binary + '401': + description: > + With codes: * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + With codes: + + * **'FILLABLE_PDF_FORM_ASSIGNMENT_NOT_FOUND'** when there is no + Filalble PDF Form Assignment for given id + + * **'FILLABLE_PDF_FORM_ASSIGNMENT_ANSWERS_NOT_FOUND'** when there + are no Filalble PDF Form Assignment Answers for given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - assignments-submissions + summary: Returns answers submitted for a single Fillable PDF Form Assignment + operationId: fillable-pdf-form-assignments.form-answers.get + security: + - key: [] + - oauth: + - assignments_submissions_read + /onboarding-processes/{onboardingProcessId}/assignments: + parameters: + - $ref: '#/components/parameters/OnboardingProcessId' + get: + responses: + '200': + description: >- + Assignments associated with the given Onboarding Process were + returned + content: + application/json: + schema: + $ref: '#/components/schemas/Assignments' + '401': + description: > + With codes: * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + With codes: + + * **'ONBOARDING_PROCESS_NOT_FOUND'** when there is no Onboarding + Process for given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - assignments + summary: Returns Assignments associated with a single Onboarding Process + operationId: onboarding-processes.assignments.get + security: + - key: [] + - oauth: + - assignments_read + /activity-assignments/{activityAssignmentId}/attachments: + parameters: + - $ref: '#/components/parameters/ActivityAssignmentId' + get: + responses: + '200': + description: >- + Attachments submitted for the given Activity Assignment were + returned + content: + application/json: + schema: + $ref: '#/components/schemas/ActivityAssignmentAttachments' + '401': + description: > + With codes: * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + With codes: + + * **'ACTIVITY_ASSIGNMENT_NOT_FOUND'** when there is no Activity + Assignment for given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - assignments-submissions + summary: Returns list of Attachments submitted for a single Activity Assignment + operationId: activity-assignments.attachments.get + security: + - key: [] + - oauth: + - assignments_submissions_read + /activity-assignments/{activityAssignmentId}/attachments/{attachmentId}: + parameters: + - $ref: '#/components/parameters/ActivityAssignmentId' + - $ref: '#/components/parameters/AttachmentId' + get: + responses: + '200': + description: >- + Single Attachment submitted for the given Activity Assignment was + retrieved + content: + application/octet-stream: + schema: + type: string + format: binary + '401': + description: > + With codes: * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + With codes: + + * **'ACTIVITY_ASSIGNMENT_NOT_FOUND'** when there is no Activity + Assignment for given id + + * **'ATTACHMENT_NOT_FOUND'** when there is no Attachment for given + id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - assignments-submissions + summary: Returns single Attachment for specific Activity Assignment + operationId: activity-assignments.attachments.getById + security: + - key: [] + - oauth: + - assignments_submissions_read + /users: + get: + responses: + '200': + description: List of users in your company + content: + application/json: + schema: + $ref: '#/components/schemas/Users' + '400': + description: | + with codes + * **INVALID_PAGE_ID** when pageId is not a correct value + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: | + with code * **PERMISSION_DENIED** Not permitted to manage users + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - users + summary: List users of your company + operationId: users.all + security: + - key: [] + - oauth: + - users_read + parameters: + - in: query + description: full-text search query based on firstName, lastName, email + name: q + schema: + type: string + minLength: 3 + - in: query + description: number of elements to return. max value is 100 + name: limit + schema: + type: integer + minimum: 1 + maximum: 100 + default: 100 + - in: query + description: number of elements to skip while processing result + name: offset + schema: + type: integer + minimum: 0 + default: 0 + - in: query + description: >- + ISO8601-formatted time boundaries for the user update time, Format: + yyyy-MM-ddTHH:mm:ss.SSSZZ + name: updatedAfter + schema: + type: string + format: date-time + deprecated: true + post: + responses: + '201': + description: Created user + content: + application/json: + schema: + $ref: '#/components/schemas/UserEntity' + '400': + description: > + with codes + + * **LANGUAGE_DISABLED** User language is not available as part of + company subscription plan + + * **INVALID_USER_NAME** when firstName or lastName contains invalid + characters (e.g. leading or trailing spaces) + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: | + with code * **PERMISSION_DENIED** Not permitted to access users + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: User already exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + $ref: '#/components/responses/SemanticError' + tags: + - users + summary: Create a new user + operationId: users.create + security: + - key: [] + - oauth: + - users_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/NewUser' + description: User object to be created + deprecated: true + /users/me: + get: + responses: + '200': + description: My user details + content: + application/json: + schema: + $ref: '#/components/schemas/UserEntity' + tags: + - users + summary: Get details of my user + operationId: users.me + security: + - key: [] + - oauth: + - users_read + deprecated: true + /users/{id}: + parameters: + - $ref: '#/components/parameters/userId' + get: + responses: + '200': + description: User details + content: + application/json: + schema: + $ref: '#/components/schemas/UserEntity' + '403': + description: | + with code * **PERMISSION_DENIED** Not permitted to manage users + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: User not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - users + summary: Get details of a user with given id + operationId: users.get + security: + - key: [] + - oauth: + - users_read + deprecated: true + patch: + responses: + '200': + description: Updated user + content: + application/json: + schema: + $ref: '#/components/schemas/UserEntity' + '400': + description: > + with codes + + * **LANGUAGE_DISABLED** Updated language is not available as part of + company subscription plan + + * **INVALID_LOCATION** when one of location properties contains + invalid characters + + * **INVALID_USER_NAME** when firstName or lastName contains invalid + characters (e.g. leading or trailing spaces) + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: | + with code * **PERMISSION_DENIED** Not permitted to access users + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: User not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: > + with codes + + * **RESOURCE_ALREADY_EXIST** when user already exists + + * **SSO_IDENTIFIER_ALREADY_EXISTS** when user with given + ssoIdentifier already exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - users + summary: Update a user + operationId: users.update + security: + - key: [] + - oauth: + - users_manage + requestBody: + $ref: '#/components/requestBodies/JSONPatch' + deprecated: true + delete: + deprecated: true + responses: + '204': + description: User successfully deactivated + '403': + description: | + with code * **PERMISSION_DENIED** Not permitted to manage users + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: User not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Deactivates a User with given Id. Please use `DELETE + /users/{id}/activation` instead. + tags: + - users + summary: Deactivate a user + operationId: users.activation.delete + security: + - key: [] + - oauth: + - users_manage + /users/{id}/reset-password: + parameters: + - $ref: '#/components/parameters/userId' + post: + responses: + '204': + description: The password reset email successfully sent + '400': + description: > + with codes + + * **USER_DISABLED** when user is disabled + + * **USER_LOCKED** when user is locked (after login/password + failures) + + * **USER_EMAIL_INVALID** when user email is invalid + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with codes + + * **PASSWORD_AUTHENTICATION_DISABLED** when user cannot use + login/password authentication + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: User not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Send password recovery instruction to the email address associated with + a user with a given id. The password will not be reset until the user + with a given id creates a new password. + tags: + - users + summary: Send a password reset email to a user + operationId: users.password.reset + security: + - key: [] + - oauth: + - users_manage + /users/{id}/activation-email: + parameters: + - $ref: '#/components/parameters/userId' + post: + responses: + '204': + description: Activation email successfully sent + '403': + description: | + with code * **PERMISSION_DENIED** Not permitted to manage users + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: User not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + with codes + + * **ACTIVATION_EMAIL_UNAVAILABLE** when user is already activated or + deactivated. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Send an activation email to a user with given id. Users created via an + API are not active. + + This method is an alternative to activating a user directly and allows + sending an activation email + + in which a user will have to open a link and follow instructions on a + screen to activate his/her account. + tags: + - users + summary: Send an activation email to a user + operationId: users.activation.email.send + security: + - key: [] + - oauth: + - users_manage + deprecated: true + /users/{id}/activation: + parameters: + - $ref: '#/components/parameters/userId' + put: + responses: + '204': + description: User successfully activated + '400': + description: | + with codes + * **PROPERTY_INVALID** when user's property is invalid, e.g. email + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: | + with code * **PERMISSION_DENIED** Not permitted to manage users + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: User not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: > + When activating a previously deactivated user, whilst there is an + active user with the same email. + + There could not be more than one activated user with the same email + in the same time. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Activate a user with given id. Users created via an API are not active. + + This method allows activating a user so he/she can sign in straight + away. + tags: + - users + summary: Activate a user + operationId: users.activation.activate + security: + - key: [] + - oauth: + - users_manage + deprecated: true + delete: + responses: + '204': + description: User successfully deactivated + '403': + description: | + with code + * **PERMISSION_DENIED** when user is not permitted to manage users + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: User not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - users + summary: Deactivate a user + operationId: users.activation.deactivate + security: + - key: [] + - oauth: + - users_manage + deprecated: true + /users/{id}/avatar: + parameters: + - $ref: '#/components/parameters/userId' + put: + responses: + '204': + description: Avatar successfully updated + '400': + description: > + with codes + + * **UNMARSHALLING_ERROR** when request cannot be unmarshalled. + This might be usually caused by missing: + - `boundary` parameter in HTTP Request `Content-Type` header + - `boundary` between parts + - `Content-Disposition` header in at least one part + - `name` parameter in at least one `Content-Disposition` header. + Please check reference: https://tools.ietf.org/html/rfc7578#section-4 + + * **MISSING_FILE_PART** when missing part with name `file` (`file` + is case sensitive) + + * **MISSING_FILE_NAME** when `filename` is not available in `file` + part + + * **MISSING_MEDIA_TYPE** when media type in `Content-Type` header is + not available in `file` part + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: | + with code * **PERMISSION_DENIED** Not permitted to manage users + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: User not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - users + summary: Update user avatar + operationId: users.avatar.update + security: + - key: [] + - oauth: + - users_manage + requestBody: + content: + multipart/form-data: + schema: + type: object + properties: + file: + description: The file to upload. + type: string + format: binary + required: + - file + deprecated: true + /system-roles: + get: + responses: + '200': + description: List of system roles + content: + application/json: + schema: + $ref: '#/components/schemas/SystemRoles' + '403': + description: | + with code * **PERMISSION_DENIED** Not permitted to manage users + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + summary: List system roles + operationId: system-roles.all + security: + - key: [] + - oauth: + - users_read + tags: + - users + /access-groups: + get: + responses: + '200': + description: List of access groups + content: + application/json: + schema: + $ref: '#/components/schemas/AccessGroups' + '403': + description: > + with code * **PERMISSION_DENIED** Not permitted to manage access + groups + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + summary: List access groups configured in your company + operationId: access-groups.all + externalDocs: + url: >- + https://help.smartrecruiters.com/Company_settings/User_Management/Access_Groups + security: + - key: [] + - oauth: + - users_read + tags: + - users + /access-groups/{accessGroupId}/users/{id}: + parameters: + - $ref: '#/components/parameters/accessGroupId' + - $ref: '#/components/parameters/userId' + delete: + responses: + '204': + description: User successfully removed from access group + '403': + description: > + with code * **PERMISSION_DENIED** Not permitted to manage access + groups + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes + + * **USER_NOT_FOUND** when user with given id doesn't exist + + * **USER_NOT_IN_ACCESS_GROUP** when user is not member of access + group + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + summary: Remove user from access group + operationId: access-groups.users.remove + security: + - key: [] + - oauth: + - users_manage + tags: + - users + /access-groups/{accessGroupId}/users: + parameters: + - $ref: '#/components/parameters/accessGroupId' + post: + responses: + '201': + description: Users successfully added to access group + content: + application/json: + schema: + $ref: '#/components/schemas/AccessGroups' + '400': + description: > + Cannot assigned user to access group with codes + + * **ACCESS_GROUP_NOT_ALLOWED_FOR_USER** when access groups are not + allowed for user + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with code * **PERMISSION_DENIED** Not permitted to manage access + groups + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + User or access group not found with codes + + * **USER_NOT_FOUND** when user with given id doesn't exist + + * **ACCESS_GROUP_NOT_FOUND** when access group with given id + doesn't exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + summary: Assign users to access group + operationId: access-groups.users.assign + security: + - key: [] + - oauth: + - users_manage + tags: + - users + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserIds' + /subscriptions: + post: + summary: Subscribe to a webhook. + description: > + Please be aware that before any event is delivered each subscription + needs to be activated. + + + See [subscription activation](subscriptionsactivate-1). + + + We do limit number of subscriptions each subscriber can register. It + means that: + + + * individual user can register up to 20 subscriptions + + * OAuth application can register up to 20 subscriptions on behalf of a + single user + + + Alerting email address and callback authentication properties are + optional. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SubscriptionRequest' + responses: + '201': + description: Webhook subscription created. + content: + application/json: + schema: + $ref: '#/components/schemas/Subscription' + '400': + description: Invalid request query parameters. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + With codes: + + * **NO_PERMISSION_TO_MANAGE_WEBHOOKS** when no permission to manage + webhook subscriptions + + * **SUBSCRIPTIONS_LIMIT_EXCEEDED** when subscription limit for + subscriber is exceeded + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: >- + Incorrect subscription data. Provided callback URL is invalid or + event name is not found. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + callbacks: + onJobCreated: + $ref: '#/components/callbacks/onJobCreated' + onJobUpdated: + $ref: '#/components/callbacks/onJobUpdated' + onJobStatusUpdated: + $ref: '#/components/callbacks/onJobStatusUpdated' + onJobHiringTeamUpdated: + $ref: '#/components/callbacks/onJobHiringTeamUpdated' + onJobAdCreated: + $ref: '#/components/callbacks/onJobAdCreated' + onJobAdUpdated: + $ref: '#/components/callbacks/onJobAdUpdated' + onJobAdPostingsUpdated: + $ref: '#/components/callbacks/onJobAdPostingsUpdated' + onPositionCreated: + $ref: '#/components/callbacks/onPositionCreated' + onPositionUpdated: + $ref: '#/components/callbacks/onPositionUpdated' + onPositionDeleted: + $ref: '#/components/callbacks/onPositionDeleted' + onApplicationCreated: + $ref: '#/components/callbacks/onApplicationCreated' + onApplicationStatusUpdated: + $ref: '#/components/callbacks/onApplicationStatusUpdated' + onApplicationFieldsUpdated: + $ref: '#/components/callbacks/onApplicationFieldsUpdated' + onApplicationOnboardingStatusUpdated: + $ref: '#/components/callbacks/onApplicationOnboardingStatusUpdated' + onApplicationAttachmentCreated: + $ref: '#/components/callbacks/onApplicationAttachmentCreated' + onApplicationSourceUpdated: + $ref: '#/components/callbacks/onApplicationSourceUpdated' + onCandidateCreated: + $ref: '#/components/callbacks/onCandidateCreated' + onCandidateUpdated: + $ref: '#/components/callbacks/onCandidateUpdated' + onCandidateDeleted: + $ref: '#/components/callbacks/onCandidateDeleted' + onOfferCreated: + $ref: '#/components/callbacks/onOfferCreated' + onOfferUpdated: + $ref: '#/components/callbacks/onOfferUpdated' + onOfferApprovalCreated: + $ref: '#/components/callbacks/onOfferApprovalCreated' + onOfferApprovalApproved: + $ref: '#/components/callbacks/onOfferApprovalApproved' + onOfferApprovalRejected: + $ref: '#/components/callbacks/onOfferApprovalRejected' + onOfferApprovalAbandoned: + $ref: '#/components/callbacks/onOfferApprovalAbandoned' + onOfferApprovalStepApproved: + $ref: '#/components/callbacks/onOfferApprovalStepApproved' + onOfferApprovalStepRejected: + $ref: '#/components/callbacks/onOfferApprovalStepRejected' + onOfferApproverSkipped: + $ref: '#/components/callbacks/onOfferApproverSkipped' + onOfferApproverDelegated: + $ref: '#/components/callbacks/onOfferApproverDelegated' + onOfferApprovalCommentCreated: + $ref: '#/components/callbacks/onOfferApprovalCommentCreated' + onJobApprovalCreated: + $ref: '#/components/callbacks/onJobApprovalCreated' + onJobApprovalApproved: + $ref: '#/components/callbacks/onJobApprovalApproved' + onJobApprovalRejected: + $ref: '#/components/callbacks/onJobApprovalRejected' + onJobApprovalAbandoned: + $ref: '#/components/callbacks/onJobApprovalAbandoned' + onJobApprovalStepApproved: + $ref: '#/components/callbacks/onJobApprovalStepApproved' + onJobApprovalStepRejected: + $ref: '#/components/callbacks/onJobApprovalStepRejected' + onJobApproverSkipped: + $ref: '#/components/callbacks/onJobApproverSkipped' + onJobApproverDelegated: + $ref: '#/components/callbacks/onJobApproverDelegated' + onJobApprovalCommentCreated: + $ref: '#/components/callbacks/onJobApprovalCommentCreated' + onReviewCreated: + $ref: '#/components/callbacks/onReviewCreated' + onReviewUpdated: + $ref: '#/components/callbacks/onReviewUpdated' + onReviewDeleted: + $ref: '#/components/callbacks/onReviewDeleted' + onApplicationScreeningAnswersCreated: + $ref: '#/components/callbacks/onApplicationScreeningAnswersCreated' + onApplicationScreeningAnswersUpdated: + $ref: '#/components/callbacks/onApplicationScreeningAnswersUpdated' + onOnboardingProcessStarted: + $ref: '#/components/callbacks/onOnboardingProcessStarted' + onOnboardingAssignmentsHighPriorityCompleted: + $ref: '#/components/callbacks/onOnboardingAssignmentsHighPriorityCompleted' + onOnboardingAssignmentsCompleted: + $ref: '#/components/callbacks/onOnboardingAssignmentsCompleted' + operationId: subscriptions.create + tags: + - subscriptions + security: + - key: [] + - oauth: + - webhooks_write + - webhooks_manage + get: + parameters: + - $ref: '#/components/parameters/pageId' + - $ref: '#/components/parameters/limit' + summary: Retrieve webhook subscriptions. + responses: + '200': + description: List of subscription details. + content: + application/json: + schema: + $ref: '#/components/schemas/Subscriptions' + headers: + Link: + description: >- + Link to next resources is provided in the Link header according + to [RFC8288](https://tools.ietf.org/html/rfc8288). The relation + type is "next". + schema: + type: string + '401': + description: Unauthorized + '403': + description: No permission to see subscriptions + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + operationId: subscriptions.getAll + tags: + - subscriptions + security: + - key: [] + - oauth: + - webhooks_read + - webhooks_manage + /subscriptions/{id}: + parameters: + - $ref: '#/components/parameters/subscriptionId' + get: + summary: Retrieve single webhook subscription. + responses: + '200': + description: Subscription details. + content: + application/json: + schema: + $ref: '#/components/schemas/Subscription' + '403': + description: No permission to see this subscription. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + $ref: '#/components/responses/SubscriptionNotFound' + operationId: subscriptions.get + tags: + - subscriptions + security: + - key: [] + - oauth: + - webhooks_read + - webhooks_manage + delete: + summary: Delete webhook subscription. + responses: + '204': + description: Webhook subscription deleted. + '403': + description: No permission to delete webhook subscription. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + $ref: '#/components/responses/SubscriptionNotFound' + operationId: subscriptions.delete + tags: + - subscriptions + security: + - key: [] + - oauth: + - webhooks_delete + - webhooks_manage + /subscriptions/{id}/activation: + parameters: + - $ref: '#/components/parameters/subscriptionId' + put: + summary: Activate webhook subscription. + description: > + To ensure that target server is ready to consume notifications, we + require you to implement the initial + + handshake. + + + Having subscription with `callbackUrl`: `https://example.org/hook`, + during activation we will make `POST` + + request with `X-Hook-Secret` header: + + + ``` + + POST https://example.com/hook + + X-Hook-Secret: 4jn8fs9011jj8 + + ``` + + + We expect your server to respond within the time of 20 seconds with HTTP + `200` response containing + + `X-Hook-Secret` header with same value. + + + ``` + + Response 200 + + X-Hook-Secret: 4jn8fs9011jj8 + + ``` + responses: + '204': + description: Subscription activated. + '404': + $ref: '#/components/responses/SubscriptionNotFound' + '409': + description: Subscription already activated. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '424': + description: Webhook activation handshake failed. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + operationId: subscriptions.activate + tags: + - subscriptions + security: + - key: [] + - oauth: + - webhooks_write + - webhooks_manage + /subscriptions/{id}/secret-key: + parameters: + - $ref: '#/components/parameters/subscriptionId' + post: + summary: Generate secret key for a webhook subscription. + description: > + We allow you to generate a secret key for the subscription. You can use + it to verify the author of callback messages. When you + + have a secret key already defined - a creation of new one will make old + one deprecated - it will be still active for 24 hours + + though. You can have up to 16 non-expired secret keys. + + + A signature will be included in header `smartrecruiters-signature` of + callback request. Additionally we will send + + `smartrecruiters-timestamp` header with timestamp (seconds) of request. + + + `smartrecruiters-signature` header value has the following format: + + + ``` + + $SIGNATURE_SCHEMA=$SIGNATURE_1;$SIGNATURE_SCHEMA=$SIGNATURE_2... + + ``` + + + As you may notice there may be multiple signatures included in the + header. It can be caused by one or both: + + * having multiple active keys + + * smartrecruiters providing multiple signatures per key with different + signature schemes. We may use it in the + + future to deliver new algorithm of signature creation without breaking + backward compability. + + Every segment of header value is delimited by `;` character + + + Currently, we support and sent following signature + (`$SIGNATURE_SCHEMA`): + + + #### 1) `v1` + + + Signature calculated using HMAC with SHA256 algorithm. Hash should be + calculated from following elements + + concatenated by the `.` character: + * `smartrecruiters-timestamp` header value + * request body + * `event-id` header value + * `event-name` header value + * `event-version` header value + * `link` header value + + Order of this elements is important. In absence of header please use an + empty string as its value. + + + For example assume we have: + + * One active secret key: HeBVky2bccvvkcXPimH8c + + * Callback request: + * headers: + * content-type: application/json + * smartrecruiters-signature: "v1=2e9291f10d44ca10204a4cd81b05d73b6a316b2b605d4e2e0e0b37b40198ce1f" + * smartrecruiters-timestamp = "1574080897" + * event-id = "123" + * link = "; rel=self" + * event-name = "application.created" + * event-version = "v201910" + * body: {"job_id":"jid","candidate_id": "cid"} + + hash should be calculated from value: + + ``` + + 1574080897.{"job_id":"jid","candidate_id":"cid"}.123.application.created.v201910.; + rel=self + + ``` + + + and after using HMAC and SHA256 it should give you hash : + 2e9291f10d44ca10204a4cd81b05d73b6a316b2b605d4e2e0e0b37b40198ce1f, + + + so that `smartrecruiters-signature` header in the callback request will + have value: + + `v1=2e9291f10d44ca10204a4cd81b05d73b6a316b2b605d4e2e0e0b37b40198ce1f` + responses: + '201': + description: Secret key sucessfully generated. + content: + application/json: + schema: + $ref: '#/components/schemas/SecretKeyPayload' + '403': + description: > + With codes: + + * **NO_PERMISSION_TO_MANAGE_WEBHOOKS** when no permission to manage + webhook subscriptions + + * **SECRET_KEYS_LIMIT_EXCEEDED** when secret keys limit for + subscription is exceeded + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + $ref: '#/components/responses/SubscriptionNotFound' + operationId: subscriptions.generateSecretKey + tags: + - subscriptions + security: + - key: [] + - oauth: + - webhooks_write + - webhooks_manage + get: + summary: Retrieve subscription secret key + description: Retrieves the last secret key for webhook subscription. + responses: + '200': + description: Subscription secret key. + content: + application/json: + schema: + $ref: '#/components/schemas/SecretKeyPayload' + '403': + description: No permission to retrieve secret key for webhook subscription. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + $ref: '#/components/responses/SubscriptionNotFound' + operationId: subscriptions.getSecretKey + tags: + - subscriptions + security: + - key: [] + - oauth: + - webhooks_read + - webhooks_manage + /subscriptions/{id}/callbacks-log: + get: + parameters: + - $ref: '#/components/parameters/subscriptionId' + - $ref: '#/components/parameters/pageId' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/callbackStatus' + - $ref: '#/components/parameters/after' + - $ref: '#/components/parameters/before' + summary: Retrieve callback request details starting from newest. + responses: + '200': + description: List of callback request details. + content: + application/json: + schema: + $ref: '#/components/schemas/CallbackRequests' + headers: + Link: + description: >- + Link to next resources is provided in the Link header according + to [RFC8288](https://tools.ietf.org/html/rfc8288). The relation + type is "next". + schema: + type: string + operationId: subscriptions.searchCallbackLog + tags: + - subscriptions + security: + - key: [] + - oauth: + - webhooks_read + - webhooks_manage +components: + schemas: + ApplyApiResponse: + type: object + properties: + id: + type: string + createdOn: + type: string + candidatePortalUrl: + type: string + smartrJoinUrl: + type: string + ApplyApiError: + required: + - code + - id + type: object + properties: + id: + type: string + code: + type: string + enum: + - INVALID_REQUEST + - INVALID_INPUT + - DATA_VALIDATION_ERROR + - RESOURCE_NOT_FOUND_ERROR + - COMPANY_NOT_FOUND_ERROR + - COMPANY_RETRIEVAL_ERROR + - APPLY_API_ERROR + - FILE_UPLOAD_ERROR + - FILE_API_ERROR + - INVALID_API_KEY_ERROR + - UNAUTHORIZED + - REST_CALL_TIMEOUT + - TRAFFIC_LOCKED + message: + type: string + AnswerRecord: + type: object + properties: + fields: + type: array + additionalProperties: + type: array + items: + type: string + description: >- + Multiple fields may be used for example for questions (Preferred + Work Shifts, Languages, EEO, Currency) + items: + $ref: '#/components/schemas/AnswerField' + required: + - fields + ApplyApiRequest: + required: + - email + - firstName + - lastName + type: object + properties: + firstName: + maxLength: 128 + minLength: 0 + type: string + lastName: + maxLength: 128 + minLength: 0 + type: string + email: + maxLength: 128 + minLength: 0 + type: string + createJoinLink: + type: boolean + conditionalsIncluded: + type: boolean + description: > + Specifies whether conditional questions should be returned in the + response. 'false' if not specified + + - Only available for BETA customers + phoneNumber: + maxLength: 128 + minLength: 0 + type: string + location: + $ref: '#/components/schemas/Location' + web: + $ref: '#/components/schemas/Web' + tags: + type: array + items: + type: string + education: + type: array + items: + $ref: '#/components/schemas/Education' + experience: + type: array + items: + $ref: '#/components/schemas/Employment' + sourceDetails: + $ref: '#/components/schemas/SourceDetails' + resume: + $ref: '#/components/schemas/Attachment' + avatar: + $ref: '#/components/schemas/Attachment' + attachments: + type: array + items: + $ref: '#/components/schemas/Attachment' + answers: + type: array + items: + $ref: '#/components/schemas/ScreeningQuestionAnswer' + messageToHiringManager: + maxLength: 4000 + minLength: 0 + type: string + consent: + type: boolean + consentDecisions: + type: object + additionalProperties: + type: boolean + internal: + type: boolean + Attachment: + required: + - id + - actions + type: object + properties: + fileName: + maxLength: 100 + minLength: 0 + type: string + mimeType: + type: string + fileContent: + maxLength: 13981014 + minLength: 1 + type: string + type: + type: string + enum: + - VIDEO_URL + - PDF_URL + - OTHER_URL + url: + type: string + format: uri + id: + type: string + name: + type: string + contentType: + type: string + actions: + type: object + required: + - download + properties: + download: + $ref: '#/components/schemas/Action' + Education: + required: + - degree + - institution + type: object + properties: + institution: + maxLength: 200 + minLength: 1 + type: string + degree: + maxLength: 200 + minLength: 1 + type: string + major: + maxLength: 200 + minLength: 1 + type: string + current: + type: boolean + startDate: + pattern: \d{4}-\d{2}-\d{2} + type: string + $ref: '#/components/schemas/When' + endDate: + pattern: \d{4}-\d{2}-\d{2} + type: string + $ref: '#/components/schemas/When' + location: + maxLength: 200 + minLength: 0 + type: string + description: + maxLength: 4000 + minLength: 0 + type: string + Employment: + required: + - startDate + - title + type: object + properties: + title: + maxLength: 200 + minLength: 0 + type: string + company: + maxLength: 200 + minLength: 0 + type: string + current: + type: boolean + startDate: + pattern: \d{4}-\d{2}-\d{2} + type: string + endDate: + pattern: \d{4}-\d{2}-\d{2} + type: string + location: + maxLength: 200 + minLength: 0 + type: string + description: + maxLength: 4000 + minLength: 0 + type: string + Location: + type: object + properties: + country: + maxLength: 128 + minLength: 1 + type: string + countryCode: + maxLength: 2 + minLength: 2 + type: string + region: + maxLength: 128 + minLength: 0 + type: string + regionCode: + maxLength: 5 + minLength: 2 + type: string + city: + maxLength: 128 + minLength: 1 + type: string + lat: + maximum: 90 + minimum: -90 + type: number + format: float + lng: + maximum: 180 + minimum: -180 + type: number + format: float + address: + type: string + format: address + postalCode: + type: string + longitude: + type: string + latitude: + type: string + manual: + type: boolean + remote: + type: boolean + required: + - city + - countryCode + description: >- + regionCode is not recommended to be used for countries other than the + United States. + ScreeningQuestionAnswer: + required: + - id + - records + type: object + properties: + id: + type: string + records: + type: array + items: + $ref: '#/components/schemas/AnswerRecord' + SourceDetails: + required: + - sourceId + - sourceTypeId + type: object + properties: + sourceTypeId: + type: string + sourceSubTypeId: + type: string + sourceId: + type: string + Web: + type: object + properties: + skype: + maxLength: 100 + minLength: 0 + type: string + linkedIn: + maxLength: 1000 + minLength: 0 + type: string + facebook: + maxLength: 1000 + minLength: 0 + type: string + twitter: + maxLength: 100 + minLength: 0 + type: string + website: + maxLength: 1000 + minLength: 0 + type: string + ApplicationStatusInfo: + type: object + properties: + status: + type: string + enum: + - NEW + - IN_REVIEW + - INTERVIEW + - OFFER + - HIRE + - REJECTED + - WITHDRAWN + - LEAD + - TRANSFERRED + - OTHER + ApplyConfiguration: + required: + - questions + - settings + type: object + properties: + questions: + type: array + items: + $ref: '#/components/schemas/ScreeningQuestion' + settings: + $ref: '#/components/schemas/ApplySettings' + privacyPolicies: + type: array + items: + $ref: '#/components/schemas/PrivacyPolicy' + ApplySettings: + type: object + properties: + avatarUploadAvailable: + type: boolean + FieldValue: + required: + - id + - label + type: object + properties: + id: + type: string + label: + type: string + PrivacyPolicy: + type: object + properties: + url: + type: string + orgName: + type: string + ScreeningQuestion: + required: + - fields + - id + - label + - repeatable + type: object + properties: + id: + type: string + label: + type: string + repeatable: + type: boolean + fields: + type: array + items: + $ref: '#/components/schemas/ScreeningQuestionField' + ScreeningQuestionField: + required: + - id + - label + - required + - type + - values + type: object + properties: + id: + type: string + label: + type: string + type: + type: string + enum: + - INPUT_TEXT + - SINGLE_SELECT + - MULTI_SELECT + - RADIO + - CHECKBOX + - TEXTAREA + - INFORMATION + required: + type: boolean + complianceType: + type: string + enum: + - DIVERSITY + values: + type: array + items: + $ref: '#/components/schemas/FieldValue' + ApprovalRequests: + description: Approval requests + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/ApprovalRequest' + ApprovalRequest: + description: Approval request + type: object + properties: + id: + $ref: '#/components/schemas/ApprovalRequestId' + subject: + $ref: '#/components/schemas/Subject' + type: + $ref: '#/components/schemas/Type' + decisionMode: + $ref: '#/components/schemas/DecisionMode' + status: + description: Status of approval request + type: string + example: APPROVED + enum: + - PENDING + - APPROVED + - REJECTED + - ABANDONED + steps: + type: array + items: + $ref: '#/components/schemas/Step' + approvalRequestId: + type: string + ApprovalRequestId: + description: Approval request id + type: string + Subject: + description: Subject of approval request + type: object + properties: + id: + type: string + type: + type: string + enum: + - job + - offer + Type: + type: string + enum: + - sequential + - parallel + DecisionMode: + type: string + enum: + - any + - all + Step: + description: Required steps to complete approval + type: object + properties: + status: + description: Status of approval step + type: string + example: APPROVED + enum: + - PENDING + - APPROVED + - REJECTED + - SKIPPED + approvers: + description: The order matters when type is `sequential` + type: array + items: + $ref: '#/components/schemas/Approver' + StepInput: + description: Required steps to complete approval + type: object + properties: + approvers: + description: The order matters when type is `sequential` + type: array + minItems: 1 + items: + $ref: '#/components/schemas/ApproverInput' + Approver: + description: Approver + type: object + properties: + id: + description: Approver id + type: string + decision: + description: Decision status for approver + type: string + example: APPROVED + enum: + - PENDING + - APPROVED + - REJECTED + - SKIPPED + decidedOn: + description: Decision date + type: string + format: date-time + ApproverInput: + description: Approver + type: object + properties: + id: + description: Approver id + type: string + Comments: + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/Comment' + Comment: + type: object + properties: + content: + type: string + authorId: + type: string + createdOn: + type: string + format: date-time + ErrorResponse: + type: object + properties: + errors: + type: array + items: + $ref: '#/components/schemas/Error' + message: + type: string + required: + - errors + Error: + type: object + required: + - code + properties: + code: + type: string + message: + type: string + PartnerConfigurationRequest: + required: + - assessmentPackageListUrl + - singleAssessmentPackageUrl + - consentUrl + - consentDisplayMode + - oauthTokenUrl + - supportedAssessmentTypes + type: object + properties: + consentUrl: + type: string + format: uri + description: > + Refers to Partner API: `GET /integration`. SmartRecruiters will add + URL query parameters: + + companyId and redirect (only when `consentDisplayMode=REDIRECT`) + consentDisplayMode: + type: string + enum: + - REDIRECT + - POPUP + description: > + REDIRECT: End users will leave SmartRecruiters and be redirected to + the url configured in consentUrl. + + POPUP: End users will remain in SmartRecruiters and see a pop up + widget. + assessmentPackageListUrl: + type: string + format: uri + description: 'Refers to Partner API: `GET /packages`' + singleAssessmentPackageUrl: + type: string + format: uri + description: 'Refers to Partner API: `GET /packages/{assessmentPackageId}`' + packageOrderUrl: + type: string + format: uri + description: 'Refers to Partner API: `POST /packages/orders`' + inlineAssessmentPackageOrderUrl: + type: string + format: uri + description: 'Refers to Partner API: `POST /packages/inline/orders`' + oauthTokenUrl: + type: string + format: uri + description: >- + Endpoint to exchange the OAuth 2.0 credentials we received from your + service for an access token to your endpoints. + integrationDisableUrl: + type: string + format: uri + description: >- + Refers to Partner API: `DELETE + com/integrations/companies/{companyId}` + fields: + type: array + maxItems: 5 + items: + $ref: '#/components/schemas/Field' + supportedAssessmentTypes: + type: array + minItems: 1 + maxItems: 6 + items: + $ref: '#/components/schemas/AssessmentType' + PartnerConfiguration: + required: + - assessmentPackageListUrl + - singleAssessmentPackageUrl + - consentUrl + - consentDisplayMode + - oauthTokenUrl + - supportedAssessmentTypes + type: object + properties: + consentUrl: + type: string + description: >- + Refers to Partner API: GET /integration. SmartRecruiters will add + URL query parameters: companyId and redirect (only when + consentDisplayMode=REDIRECT) + format: uri + consentDisplayMode: + type: string + description: >- + REDIRECT: End users will leave SmartRecruiters and be redirected to + the url configured in consentUrl. POPUP: End users will remain in + SmartRecruiters and see a pop up widget. + enum: + - REDIRECT + - POPUP + assessmentPackageListUrl: + type: string + description: 'Refers to Partner API: GET /packages' + format: uri + singleAssessmentPackageUrl: + type: string + description: 'Refers to Partner API: GET /packages/{assessmentPackageId}' + format: uri + packageOrderUrl: + type: string + description: 'Refers to Partner API: POST /packages/orders' + format: uri + inlineAssessmentPackageOrderUrl: + type: string + description: 'Refers to Partner API: POST /packages/inline/orders' + format: uri + oauthTokenUrl: + type: string + description: >- + Endpoint to exchange the OAuth 2.0 credentials we received from your + service for an access token to your endpoints. + format: uri + integrationDisableUrl: + type: string + description: 'Refers to Partner API: DELETE /integrations/companies/{companyId}' + format: uri + fields: + type: array + maxItems: 5 + items: + $ref: '#/components/schemas/FieldView' + supportedAssessmentTypes: + type: array + minItems: 1 + maxItems: 6 + items: + $ref: '#/components/schemas/AssessmentType' + FieldView: + type: object + properties: + id: + type: string + name: + type: string + description: + type: string + Field: + required: + - description + - id + - name + type: object + properties: + id: + type: string + description: Id field will be used in the URL as a HTTP request parameter name + name: + type: string + description: User friendly name of the parameter + description: + type: string + description: Description saying what is the purpose of this parameter + ClientCredentials: + required: + - clientId + - clientSecret + type: object + properties: + clientId: + type: string + clientSecret: + type: string + AssessmentResult: + required: + - assessmentId + type: object + properties: + assessmentId: + type: string + assessmentDate: + type: string + format: date-time + submissionDate: + type: string + format: date-time + assessmentName: + type: string + score: + $ref: '#/components/schemas/Score' + type: string + scoreLabel: + type: string + summary: + type: string + attachments: + type: array + items: + $ref: '#/components/schemas/Attachment' + status: + type: string + enum: + - IN_PROGRESS + - PENDING + - COMPLETED + - REJECTED + - EXPIRED + name: + type: string + PackageResult: + type: object + properties: + assessmentPackageDate: + type: string + format: date-time + description: The date when assessments package was sent to the candidate + submissionDate: + type: string + format: date-time + description: The date when assessments package was submitted by the candidate + name: + type: string + description: + type: string + deprecated: true + description: >- + Not used. To display a short description in the UI, use "summary" + instead + status: + type: string + enum: + - IN_PROGRESS + - PENDING + - COMPLETED + - REJECTED + - EXPIRED + score: + $ref: '#/components/schemas/Score' + scoreLabel: + type: string + description: Will be displayed next to the score in the candidate profile + summary: + type: string + description: >- + Will be displayed next to the score and label in the candidate + profile + attachments: + type: array + items: + $ref: '#/components/schemas/Attachment' + assessmentResults: + type: array + items: + $ref: '#/components/schemas/AssessmentResult' + Score: + required: + - max + - min + - raw + type: object + properties: + raw: + type: integer + format: int64 + description: Score value + min: + type: integer + format: int64 + description: Range lower bound - included + max: + type: integer + format: int64 + description: Range upper bound - included + description: >- + Structural score 'raw' value in a range from min to max - including min + and max. For example, score {raw:28, min:20, max:80} gives a normalized + score of 13%, which users can see in SR UI. The 'raw' value will be + converted to SR UI label '28/80' when min value is not provided. + example: >- + {raw:28, min:20, max:80} gives a normalized 13% or label '28/80' (min is + not presented in label) + AttachmentResult: + required: + - url + type: object + properties: + url: + type: string + AssessmentType: + type: string + enum: + - VIDEO_INTERVIEW + - BEHAVIORAL_ASSESSMENT + - BACKGROUND_CHECK + - REFERENCE_CHECK + - SKILL_TEST + - INLINE_ASSESSMENT + Unit: + type: object + Requester: + required: + - email + type: object + properties: + email: + type: string + Assessment: + required: + - description + - id + - type + type: object + properties: + id: + type: string + type: + $ref: '#/components/schemas/AssessmentType' + name: + type: string + description: + type: string + AssessmentPackage: + required: + - assessments + - description + - id + - name + - type + type: object + properties: + id: + type: string + type: + $ref: '#/components/schemas/AssessmentType' + name: + type: string + description: + type: string + assessments: + type: array + items: + $ref: '#/components/schemas/Assessment' + AssessmentPackageOrderRequest: + required: + - assessmentPackageId + - candidate + - companyId + - jobId + - resultCallbackURL + - job + type: object + properties: + resultCallbackURL: + type: string + format: uri + candidate: + $ref: '#/components/schemas/Candidate' + job: + $ref: '#/components/schemas/Job' + requester: + $ref: '#/components/schemas/OrderRequester' + assessmentPackageId: + type: string + jobId: + type: string + deprecated: true + companyId: + type: string + fields: + type: object + additionalProperties: + type: string + example: + partner-field-id: partner-field-value + Candidate: + required: + - id + - internal + - firstName + - lastName + - createdOn + - actions + type: object + properties: + id: + type: string + email: + type: string + firstName: + type: string + lastName: + type: string + applicationLanguage: + type: string + internal: + type: boolean + description: true, if the candidate has at least one internal application + createdOn: + type: string + format: date-time + updatedOn: + type: string + format: date-time + location: + $ref: '#/components/schemas/CandidateLocation' + averageRating: + type: number + deprecated: true + tags: + type: array + items: + type: string + consent: + type: object + properties: + status: + $ref: '#/components/schemas/ConsentStatus' + primaryAssignment: + type: object + required: + - job + - status + properties: + job: + type: object + required: + - id + - title + - actions + properties: + id: + type: string + title: + type: string + actions: + type: object + required: + - details + properties: + details: + $ref: '#/components/schemas/Action' + status: + $ref: '#/components/schemas/CandidateStatusEnum' + subStatus: + type: string + secondaryAssignments: + type: array + items: + type: object + required: + - job + properties: + job: + type: object + required: + - id + - actions + properties: + id: + type: string + actions: + type: object + required: + - details + properties: + details: + $ref: '#/components/schemas/Action' + actions: + type: object + required: + - details + - properties + properties: + details: + $ref: '#/components/schemas/Action' + properties: + $ref: '#/components/schemas/Action' + allOf: + - type: object + required: + - id + properties: + id: + $ref: '#/components/schemas/Uuid' + status: + $ref: '#/components/schemas/CandidateAttendeeStatusValue' + Job: + required: + - id + type: object + properties: + id: + type: string + format: uuid + job: + type: object + properties: + id: + type: string + title: + type: string + actions: + type: object + required: + - details + properties: + details: + $ref: '#/components/schemas/Action' + positionDetails: + $ref: '#/components/schemas/Action' + title: + type: string + refNumber: + type: string + createdOn: + type: string + format: date-time + updatedOn: + type: string + format: date-time + description: Job modification date + lastActivityOn: + type: string + format: date-time + description: Indicates last activity associated with a job + department: + $ref: '#/components/schemas/Department' + location: + $ref: '#/components/schemas/Location' + status: + $ref: '#/components/schemas/JobStatus' + postingStatus: + $ref: '#/components/schemas/PostingStatus' + OrderRequester: + required: + - email + - userId + type: object + properties: + userId: + type: string + email: + type: string + InlineAssessmentPackageOrderRequest: + required: + - assessmentPackageId + - candidate + - companyId + - completedAssessmentCallbackUrl + - jobId + - resultCallbackURL + - job + type: object + properties: + resultCallbackURL: + type: string + format: uri + candidate: + $ref: '#/components/schemas/InlineCandidate' + job: + $ref: '#/components/schemas/InlineJob' + assessmentPackageId: + type: string + jobId: + type: string + deprecated: true + companyId: + type: string + completedAssessmentCallbackUrl: + type: string + fields: + type: object + additionalProperties: + type: string + example: + partner-field-id: partner-field-value + InlineCandidate: + required: + - applicationLanguage + - email + - firstName + - lastName + type: object + properties: + email: + type: string + firstName: + type: string + lastName: + type: string + applicationLanguage: + type: string + InlineJob: + required: + - id + type: object + properties: + id: + type: string + format: uuid + InlineAssessmentPackageResponse: + required: + - assessmentPackageURL + type: object + properties: + url: + type: string + description: URL of inline assessment which will be open for candidate + TokenInput: + type: object + required: + - grant_type + - client_id + - client_secret + properties: + grant_type: + type: string + enum: + - client_credentials + client_id: + type: string + client_secret: + type: string + AccessToken: + type: object + required: + - access_token + - expires_in + properties: + access_token: + type: string + expires_in: + type: integer + description: >- + Indicates for how many seconds the token will be valid from the + moment it was generated. + TokenErrorResponse: + type: object + required: + - error + properties: + error: + type: string + error_description: + type: string + Uuid: + type: string + format: uuid + AssessmentOrder: + type: object + properties: + applicationId: + $ref: '#/components/schemas/Uuid' + orderId: + $ref: '#/components/schemas/Uuid' + assessmentPackageDate: + type: string + format: date-time + submissionDate: + type: string + format: date-time + assessmentPackageName: + type: string + description: + type: string + status: + type: string + score: + type: string + scoreLabel: + type: string + summary: + type: string + attachments: + type: array + items: + $ref: '#/components/schemas/Attachment' + assessments: + type: array + items: + $ref: '#/components/schemas/AssessmentResult' + AssessmentOrders: + type: array + items: + $ref: '#/components/schemas/AssessmentOrder' + Events: + type: object + properties: + nextPageId: + type: string + description: Unique identifier for the next page of events + limit: + type: integer + description: Number of audit events that were requested + content: + type: array + items: + $ref: '#/components/schemas/Event' + EventContext: + type: object + properties: + authenticationType: + type: string + enum: + - PASSWORD + - API_KEY + - WEB_SSO + - AUTH_TOKEN + - SUPPORT_ACCESS + currentRole: + $ref: '#/components/schemas/UserRole' + previousRole: + $ref: '#/components/schemas/UserRole' + officeName: + type: string + Event: + type: object + properties: + id: + type: string + description: Unique identifier of the event + eventName: + type: string + description: Name of the event + eventDate: + type: string + format: date-time + description: >- + Timestamp when _the thing_ represented by the event actually + happened + authorType: + type: string + enum: + - USER + - SUPPORT_USER + - SYSTEM + description: Type of the author who generated the event + authorId: + type: string + description: Unique identifier of the author + entityType: + type: string + enum: + - USER + - CANDIDATE + - APPLICATION + - OFFER + - JOB + - COMPANY + - JOB_PROPERTY + - JOB_AD + - CREDENTIAL + - REPORT_FILE + - ONBOARDING_PROCESS + description: Type of the entity that the event is related to + entityId: + type: string + description: Unique identifier of the entity that the event is related to + context: + type: object + $ref: '#/components/schemas/EventContext' + description: Additional context of event + name: + $ref: '#/components/schemas/EventName' + version: + type: string + readOnly: true + UserRole: + type: string + enum: + - ADMINISTRATOR + - EMPLOYEE + - EXTENDED + - RESTRICTED + - STANDARD + CandidateTags: + type: object + required: + - tags + properties: + tags: + type: array + maxItems: 100 + items: + type: string + maxLength: 50 + OnboardingStatus: + type: object + required: + - onboardingStatus + properties: + onboardingStatus: + type: string + enum: + - READY_TO_ONBOARD + - ONBOARDING_SUCCESSFUL + - ONBOARDING_FAILED + Candidates: + type: object + required: + - limit + - offset + - totalFound + - content + properties: + limit: + type: integer + offset: + type: integer + nextPageId: + type: string + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/Candidate' + PersonalDetails: + type: object + properties: + firstName: + type: string + minLength: 1 + lastName: + type: string + minLength: 1 + email: + type: string + format: email + phoneNumber: + type: string + location: + $ref: '#/components/schemas/CandidateLocation' + web: + $ref: '#/components/schemas/WebProfile' + CandidateInput: + type: object + required: + - firstName + - lastName + - email + properties: + firstName: + type: string + minLength: 1 + lastName: + type: string + minLength: 1 + email: + type: string + format: email + phoneNumber: + type: string + location: + $ref: '#/components/schemas/CandidateLocation' + web: + $ref: '#/components/schemas/WebProfile' + tags: + type: array + items: + type: string + education: + type: array + default: [] + items: + $ref: '#/components/schemas/Education' + experience: + type: array + default: [] + items: + $ref: '#/components/schemas/Experience' + sourceDetails: + $ref: '#/components/schemas/CandidateSource' + internal: + type: boolean + CandidateDetails: + type: object + properties: + id: + type: string + internal: + type: boolean + firstName: + type: string + lastName: + type: string + email: + type: string + phoneNumber: + type: string + location: + $ref: '#/components/schemas/CandidateLocation' + web: + $ref: '#/components/schemas/WebProfile' + createdOn: + type: string + format: date-time + updatedOn: + type: string + format: date-time + tags: + type: array + items: + type: string + averageRating: + type: number + deprecated: true + education: + type: array + items: + $ref: '#/components/schemas/Education' + experience: + type: array + items: + $ref: '#/components/schemas/Experience' + primaryAssignment: + allOf: + - $ref: '#/components/schemas/Job' + - $ref: '#/components/schemas/Assignment' + secondaryAssignments: + type: array + items: + allOf: + - $ref: '#/components/schemas/Job' + - $ref: '#/components/schemas/Assignment' + actions: + type: object + required: + - properties + properties: + properties: + $ref: '#/components/schemas/Action' + attachments: + $ref: '#/components/schemas/Action' + consent: + $ref: '#/components/schemas/Action' + consents: + $ref: '#/components/schemas/Action' + CandidateLocation: + type: object + properties: + country: + type: string + minLength: 1 + countryCode: + type: string + minLength: 2 + maxLength: 2 + regionCode: + type: string + region: + type: string + city: + type: string + minLength: 1 + lat: + type: number + format: float + lng: + type: number + format: float + Attachments: + type: object + required: + - totalFound + - content + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/Attachment' + CandidateAttachmentsForJob: + type: object + required: + - totalFound + - content + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/CandidateAttachmentForJob' + CandidateAttachmentForJob: + type: object + required: + - id + - name + - type + - contentType + properties: + id: + type: string + name: + type: string + type: + type: string + contentType: + type: string + actions: + type: object + required: + - download + - remove + properties: + download: + $ref: '#/components/schemas/Action' + remove: + $ref: '#/components/schemas/Action' + CandidateStatusEnum: + type: string + enum: + - LEAD + - NEW + - IN_REVIEW + - INTERVIEW + - OFFERED + - HIRED + - REJECTED + - WITHDRAWN + - TRANSFERRED + CandidateStatus: + type: object + required: + - status + properties: + status: + $ref: '#/components/schemas/CandidateStatusEnum' + subStatus: + type: string + startsOn: + type: string + format: date-time + reason: + type: string + description: >- + id of rejection (GET /configuration/rejection-reasons) or withdrawal + (GET /configuration/withdrawal-reasons) reason. + CandidateStatusHistoryList: + type: object + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/CandidateStatusHistoryListElem' + CandidateProperties: + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/CandidateProperty' + CandidateProperty: + type: object + required: + - id + - label + - type + - value + - actions + properties: + id: + type: string + label: + type: string + type: + $ref: '#/components/schemas/CandidatePropertyType' + value: + oneOf: + - type: string + - type: boolean + - type: number + - type: object + required: + - code + - value + properties: + code: + type: string + value: + type: number + valueLabel: + type: string + description: Label of selected option for SINGLE_SELECT field type + actions: + type: object + required: + - configuration + properties: + configuration: + $ref: '#/components/schemas/Action' + CandidatePropertyInputValue: + type: object + properties: + value: + description: string, number, boolean or object + Application: + allOf: + - properties: + applicationId: + type: string + - $ref: '#/components/schemas/Assignment' + - $ref: '#/components/schemas/ApplicationUrl' + type: object + properties: + candidateId: + type: string + format: guid + jobId: + type: string + format: guid + Assignment: + type: object + properties: + status: + $ref: '#/components/schemas/CandidateStatusEnum' + subStatus: + type: string + startsOn: + type: string + format: date-time + source: + type: string + reasonOfRejection: + $ref: '#/components/schemas/Property' + reasonOfWithdrawal: + $ref: '#/components/schemas/Property' + actions: + type: object + properties: + sourceDetails: + $ref: '#/components/schemas/Action' + ApplicationUrl: + description: > + url property of a retrieved application represents current location of + its details. Please be aware that the resource location may change in + the future. + type: object + properties: + url: + type: string + Actions: + type: object + additionalProperties: + $ref: '#/components/schemas/Action' + Action: + type: object + required: + - url + - method + properties: + url: + type: string + method: + type: string + enum: + - GET + - POST + - PUT + - PATCH + - OPTIONS + - DELETE + - HEAD + - CONNECT + WebProfile: + type: object + properties: + skype: + type: string + linkedin: + type: string + facebook: + type: string + twitter: + type: string + website: + type: string + Experience: + type: object + properties: + title: + type: string + minLength: 1 + company: + type: string + minLength: 1 + current: + type: boolean + startDate: + $ref: '#/components/schemas/When' + endDate: + $ref: '#/components/schemas/When' + location: + type: string + description: + type: string + CandidateSource: + type: object + required: + - sourceTypeId + - sourceId + properties: + sourceTypeId: + type: string + minLength: 1 + sourceSubTypeId: + type: string + sourceId: + type: string + minLength: 1 + ScreeningAnswers: + type: object + required: + - totalFound + - content + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/ScreeningAnswer' + ScreeningAnswer: + type: object + required: + - id + - type + - category + - name + - label + - records + properties: + id: + type: string + description: Id of Question to which answer was responded + type: + type: string + enum: + - text + - checkbox + - languages + - acknowledgement + - textarea + - select + - files + - info + - eeo + - radio + - salaryExpectation + - currency + - work_shifts + category: + type: string + description: | + UUID for custom questions or fixed value for predefined questions: + - eeoInformation + - ofccpDisability + - ofccpVeteransForm + - veteranStatus + - disabilityStatus + - ofccpReasonableAccommodation + - ethnicity + - ethnicGroupsDescriptions + - todaysDate + - yourName + - preferredWorkShifts + - languages + - previousEmployment + - drivingRevoked + - drivingCurrent + - criminalRecord + - workPermit + name: + type: string + description: Question name visible to administrator on questions library list + label: + type: string + description: Question text shown to candidate + records: + type: array + description: >- + Multiple records may be used for example for questions (Preferred + Work Shifts, Languages) + items: + $ref: '#/components/schemas/AnswerRecord' + AnswerField: + type: object + required: + - id + - values + properties: + id: + type: string + label: + type: string + description: Field label shown to candidate - ignore when empty + values: + type: array + description: >- + Multiple values may be used for example for Multiselect Dropdown + question + items: + $ref: '#/components/schemas/AnswerFieldValue' + AnswerFieldValue: + type: object + required: + - id + - label + properties: + id: + type: string + description: Value text or value ID - depends on question definition + label: + type: string + description: Value text shown to candidate + CandidateStatusHistoryListElem: + type: object + properties: + changedOn: + type: string + format: date-time + status: + $ref: '#/components/schemas/CandidateStatusEnum' + subStatus: + type: string + actions: + $ref: '#/components/schemas/Actions' + CandidatePropertyType: + type: string + enum: + - BOOLEAN + - COUNTRY + - CURRENCY + - DATE + - NUMBER + - PERCENT + - REGION + - TEXT + - USER + - SINGLE_SELECT + CandidateConsentStatus: + type: object + required: + - status + properties: + date: + type: string + format: date-time + description: Available when `status` is `ACQUIRED` + status: + $ref: '#/components/schemas/ConsentStatus' + CandidateConsentDecisions: + type: object + required: + - decisions + properties: + decisions: + type: array + items: + $ref: '#/components/schemas/ConsentDecision' + recentPendingRequestCreatedOn: + type: string + format: date-time + ConsentDecision: + required: + - status + - scope + type: object + properties: + status: + $ref: '#/components/schemas/ConsentDecisionStatus' + scope: + $ref: '#/components/schemas/ConsentScope' + decidedOn: + type: string + format: date-time + description: >- + present when candidate has made a consent decision (i.e. `status` is + `acquired` or `declined`) + ConsentDecisionStatus: + type: string + description: | + * **acquired** - a candidate has decided to provide a consent + * **declined** - a candidate has decided to decline a consent + * **required** - a candidate has not made any decision yet, + enum: + - acquired + - declined + - required + ConsentScope: + type: string + description: > + Available when company uses single consent approach: + + * **Single** - a single consent to company privacy policy for all scopes + + Available when company uses separated consent approach: + + * **SmartRecruit** - indicates reading and understanding or accepting + company privacy policy for job applications, + + * **SmartCRM** - a consent to be part of company communities for future + career opportunities, + + * **SmartMessage:SMS** - a consent to receive text/SMS messages for job + applications and/or future career opportunities, + + * **SmartMessage:WhatsApp** - a consent to receive WhatsApp messages for + job applications and/or future career opportunities. + enum: + - Single + - SmartRecruit + - SmartCRM + - SmartMessage:SMS + - SmartMessage:WhatsApp + ConsentRequest: + type: object + required: + - id + properties: + id: + description: candidate id + type: string + ConsentStatus: + type: string + description: | + * **REQUIRED** - no request for consent yet, + * **PENDING** - consent requested, + * **ACQUIRED** - consent provided by a candidate + enum: + - REQUIRED + - PENDING + - ACQUIRED + ConsentRequestsResults: + type: object + required: + - results + properties: + results: + type: array + items: + oneOf: + - $ref: '#/components/schemas/ConsentRequestScheduled' + - $ref: '#/components/schemas/ConsentRequestUnavailable' + ConsentRequestScheduled: + type: object + required: + - status + - body + properties: + status: + type: integer + enum: + - 202 + body: + type: object + properties: + location: + type: string + ConsentRequestUnavailable: + type: object + required: + - status + properties: + status: + type: integer + enum: + - 403 + body: + type: boolean + enum: + - false + Property: + type: object + required: + - id + properties: + id: + type: string + minLength: 1 + label: + type: string + When: + type: string + format: when + description: >- + date in YYYY, YYYY-MM or YYYY-MM-dd format, ex. "2016", "2016-11", + "2016-11-29" + CandidatePropertyValue: + type: object + required: + - id + properties: + id: + type: string + format: uuid + value: + description: string, number, boolean or object + allOf: + - type: object + properties: + id: + type: string + format: alphanumericAndDash + minLength: 1 + maxLength: 36 + - $ref: '#/components/schemas/CandidatePropertyValueLabel' + Properties: + type: object + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/Property' + CompanyConfiguration: + type: object + properties: + identifier: + type: string + description: Identifier of a company. + name: + type: string + description: Company name. + location: + $ref: '#/components/schemas/Location' + website: + type: string + description: URL to company website. + industry: + $ref: '#/components/schemas/Industry' + logo: + type: string + description: URL to company logo. + JobPropertyDefinitionList: + type: object + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/JobPropertyDefinition' + JobPropertyDefinition: + type: object + required: + - label + - category + - visible + properties: + id: + type: string + label: + type: string + category: + type: string + enum: + - job + - organization + active: + type: boolean + visible: + type: boolean + required: + type: boolean + actions: + $ref: '#/components/schemas/Actions' + JobPropertyDefinitionCreationRequest: + type: object + required: + - label + - category + - visible + properties: + label: + type: string + category: + type: string + enum: + - job + - organization + active: + type: boolean + visible: + type: boolean + required: + type: boolean + JobPropertyValueDefinitionList: + type: object + properties: + totalFound: + type: integer + nextPageId: + type: string + content: + type: array + items: + $ref: '#/components/schemas/JobPropertyValueDefinition' + JobPropertyValueDefinition: + type: object + required: + - label + properties: + id: + type: string + pattern: ^[^/]+$ + minLength: 1 + maxLength: 100 + label: + type: string + minLength: 1 + maxLength: 200 + archived: + type: boolean + DependentJobPropertyValues: + type: object + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/DependentJobPropertyValue' + DependentJobPropertyValue: + allOf: + - $ref: '#/components/schemas/Identifiable' + - $ref: '#/components/schemas/Labeled' + DependentJobProperties: + type: object + required: + - totalFound + - content + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/DependentJobProperty' + DependentJobProperty: + type: object + required: + - id + - label + properties: + id: + type: string + minLength: 1 + maxLength: 100 + label: + type: string + minLength: 1 + maxLength: 200 + DependentJobPropertiesIds: + type: object + required: + - ids + properties: + ids: + type: array + items: + type: string + minLength: 1 + maxLength: 100 + minItems: 1 + DependentJobPropertyValuesRelations: + type: object + required: + - totalFound + - content + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/DependentJobPropertyValuesRelation' + DependentJobPropertyValuesRelation: + type: object + required: + - parent + - values + properties: + parent: + $ref: '#/components/schemas/RelationJobPropertyValue' + values: + type: array + items: + $ref: '#/components/schemas/RelationJobPropertyValue' + RelationJobPropertyValue: + required: + - id + type: object + properties: + id: + type: string + minLength: 1 + label: + type: string + Department: + type: object + required: + - label + properties: + id: + type: string + label: + type: string + description: + type: string + Departments: + type: object + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/Department' + HiringProcesses: + required: + - totalFound + - content + type: object + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/HiringProcess' + HiringProcess: + type: object + properties: + id: + type: string + name: + type: string + active: + type: boolean + subStatuses: + type: object + properties: + IN_REVIEW: + type: array + items: + type: string + INTERVIEW: + type: array + items: + type: string + OFFERED: + type: array + items: + type: string + OfferPropertiesDefinition: + type: object + properties: + categories: + type: array + items: + $ref: '#/components/schemas/OfferPropertiesCategory' + CandidatePropertyDefinitionList: + type: object + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/CandidatePropertyDefinition' + CandidatePropertyDefinition: + type: object + properties: + id: + type: string + label: + type: string + type: + $ref: '#/components/schemas/CandidatePropertyType' + availability: + $ref: '#/components/schemas/CandidatePropertyAvailability' + actions: + $ref: '#/components/schemas/Actions' + CandidatePropertyValueList: + type: object + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/CandidatePropertyValue' + CandidatePropertyValueLabel: + type: object + required: + - label + properties: + label: + type: string + format: value_label + minLength: 1 + maxLength: 1000 + SourceTypes: + type: object + required: + - totalFound + - content + properties: + totalFound: + type: integer + content: + type: array + items: + type: object + required: + - id + - label + - subtypes + - actions + properties: + id: + type: string + label: + type: string + actions: + type: object + required: + - values + properties: + values: + $ref: '#/components/schemas/Action' + subtypes: + type: array + minItems: 1 + items: + $ref: '#/components/schemas/Identifiable' + Sources: + type: object + required: + - totalFound + - limit + - offset + - content + properties: + totalFound: + type: integer + limit: + type: integer + offset: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/Source' + SourceDefinition: + type: object + required: + - label + - type + - subType + properties: + label: + type: string + subType: + $ref: '#/components/schemas/Identifiable' + type: + $ref: '#/components/schemas/Identifiable' + Source: + type: object + required: + - id + - label + - sourceSubType + - actions + properties: + id: + type: string + label: + type: string + sourceSubType: + $ref: '#/components/schemas/Identifiable' + actions: + type: object + required: + - sourceDetails + properties: + sourceDetails: + $ref: '#/components/schemas/Action' + Industry: + type: object + description: Company industry information. + properties: + id: + type: string + label: + type: string + OfferPropertiesCategory: + type: object + properties: + id: + type: string + properties: + type: array + items: + $ref: '#/components/schemas/OfferPropertyDefinition' + OfferPropertyDefinition: + type: object + properties: + key: + type: string + label: + type: string + required: + type: boolean + type: + type: string + enum: + - BOOLEAN + - COUNTRY + - CURRENCY + - DATE + - NUMBER + - PERCENT + - REGION + - TEXT + - USER + - SELECT + CandidatePropertyAvailability: + type: object + properties: + toUsers: + type: string + enum: + - ALL + - FULL_ACCESS + context: + type: array + items: + type: string + enum: + - HIRE_FORM + - OFFER_FORM + - PROFILE + - OFFER_APPROVAL_FORM + forOrgFields: + type: array + items: + $ref: '#/components/schemas/CandidatePropertyFilter' + CandidatePropertyFilter: + type: object + properties: + id: + type: string + values: + $ref: '#/components/schemas/CandidatePropertyFilterValues' + actions: + $ref: '#/components/schemas/Actions' + CandidatePropertyFilterValues: + type: object + properties: + all: + type: boolean + content: + type: array + items: + type: string + LanguageCode: + type: string + enum: + - af + - am + - ar + - hy + - az + - eu + - bn + - bg + - ca + - zh-CN + - zh-TW + - hr + - cs + - da + - nl + - en-GB + - en + - et + - fi + - fr + - fr-CA + - gl + - ka + - de + - el + - gu + - iw + - hi + - hu + - is + - id + - ga + - it + - ja + - kn + - km + - ko + - lo + - lv + - lt + - ms + - ml + - mr + - mn + - ne + - 'no' + - fa + - fil + - pl + - pt + - pt-BR + - pt-PT + - ro + - ru + - sr + - si + - sk + - sl + - es + - es-MX + - sw + - sv + - ta + - te + - tr + - uk + - ur + - vi + - cy + - zu + description: >- + Language code, can be two-letter for the standard variant or with + additional two letters after a hyphen to identify a specific locale + + + Value "pt-PT" is deprecated and will not work, use "pt" instead. + default: en + Identifiable: + type: object + required: + - id + properties: + id: + type: string + minLength: 1 + maxLength: 256 + Labeled: + type: object + required: + - label + properties: + label: + type: string + minLength: 1 + LabelTranslations: + type: array + items: + $ref: '#/components/schemas/LabelTranslation' + LabelTranslation: + type: object + properties: + label: + type: string + minLength: 1 + maxLength: 200 + language: + $ref: '#/components/schemas/LanguageCode' + required: + - label + - language + JSONPatch: + type: array + items: + type: object + description: one JSON Patch operation + allOf: + - description: Members common to all operations + type: object + required: + - op + - path + properties: + path: + $ref: '#/components/schemas/jsonPointer' + - $ref: '#/components/schemas/oneOperation' + oneOf: + - type: object + required: + - op + - value + properties: + op: + type: string + enum: + - add + - replace + - test + value: {} + - type: object + required: + - op + - from + properties: + op: + type: string + enum: + - move + - copy + from: + $ref: '#/components/schemas/jsonPointer' + - type: object + required: + - op + properties: + op: + type: string + enum: + - remove + example: + - path: /path + op: add + value: example + - path: /path + op: move + from: /origin + - path: /path + op: remove + path: + required: + - path + properties: + path: + $ref: '#/components/schemas/jsonPointer' + jsonPointer: + type: string + pattern: ^(/[^/~]*(~[01][^/~]*)*)*$ + FeedBrand: + type: object + properties: + id: + type: string + name: + type: string + logo: + type: string + FeedBudget: + type: object + properties: + price: + type: string + FeedBudgeting: + type: object + properties: + programmatic: + $ref: '#/components/schemas/FeedBudget' + FeedCompany: + type: object + properties: + cid: + type: string + name: + type: string + identifier: + type: string + FeedCompensation: + type: object + properties: + minimum: + type: string + maximum: + type: string + currency: + type: string + FeedDictionaryEntry: + type: object + properties: + id: + type: string + label: + type: string + FeedJobAd: + type: object + properties: + id: + type: string + uuid: + type: string + name: + type: string + refNumber: + type: string + status: + type: string + jobAdUrl: + type: string + liveUrl: + type: string + applyUrl: + type: string + comment: + type: string + postedDate: + type: string + location: + $ref: '#/components/schemas/FeedLocation' + company: + $ref: '#/components/schemas/FeedCompany' + brand: + $ref: '#/components/schemas/FeedBrand' + creator: + $ref: '#/components/schemas/FeedUser' + budget: + $ref: '#/components/schemas/FeedBudgeting' + compensation: + $ref: '#/components/schemas/FeedCompensation' + industry: + $ref: '#/components/schemas/FeedDictionaryEntry' + function: + $ref: '#/components/schemas/FeedDictionaryEntry' + experienceLevel: + $ref: '#/components/schemas/FeedDictionaryEntry' + typeOfEmployment: + $ref: '#/components/schemas/FeedDictionaryEntry' + languageCode: + type: string + jobAd: + $ref: '#/components/schemas/FeedJobAdDetails' + FeedJobAdDetails: + type: object + properties: + companyDescription: + type: string + jobDescription: + type: string + qualifications: + type: string + additionalInformation: + type: string + FeedLocation: + type: object + properties: + city: + type: string + region: + type: string + regionCode: + type: string + country: + type: string + countryCode: + type: string + address: + type: string + zipCode: + type: string + longitude: + type: string + latitude: + type: string + remote: + type: boolean + FeedUser: + type: object + properties: + firstName: + type: string + lastName: + type: string + email: + type: string + FeedPublication: + type: object + properties: + Provider: + type: string + offset: + type: string + description: int32 + limit: + type: string + description: int32 + totalFound: + type: string + description: int64 + jobs: + type: array + items: + $ref: '#/components/schemas/FeedJobAd' + PostingUpdateRequest: + type: object + properties: + liveUrl: + type: string + status: + type: string + comment: + type: string + UserId: + type: string + pattern: '[a-fA-F0-9]{24}' + description: Id of a user from User API + UuidReadOnly: + readOnly: true + type: string + format: guid + InterviewToUpdateInput: + type: object + properties: + location: + type: string + maxLength: 500 + timezone: + type: string + maxLength: 100 + description: Name of the timezone as described in TZ database + candidate: + $ref: '#/components/schemas/AttendeeStatus' + InterviewsList: + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/Interview' + Interview: + type: object + required: + - candidate + - jobId + - organizerId + - timezone + - timeslots + properties: + id: + $ref: '#/components/schemas/UuidReadOnly' + candidate: + $ref: '#/components/schemas/Candidate' + jobId: + $ref: '#/components/schemas/Uuid' + location: + type: string + maxLength: 500 + organizerId: + $ref: '#/components/schemas/UserId' + timezone: + type: string + description: Name of the timezone as described in TZ database + maxLength: 100 + timeslots: + $ref: '#/components/schemas/Timeslots' + createdOn: + type: string + format: date-time + description: If not set it defaults to current time + refUrl: + type: string + format: url + source: + type: string + readOnly: true + Timeslot: + type: object + required: + - startsOn + - endsOn + - interviewers + properties: + id: + $ref: '#/components/schemas/UuidReadOnly' + interviewType: + $ref: '#/components/schemas/InterviewType' + title: + type: string + maxLength: 200 + place: + type: string + maxLength: 500 + startsOn: + type: string + format: date-time + endsOn: + type: string + format: date-time + interviewers: + $ref: '#/components/schemas/Interviewers' + candidateStatus: + $ref: '#/components/schemas/AttendeeStatusValue' + Timeslots: + type: array + minItems: 1 + maxItems: 50 + items: + $ref: '#/components/schemas/Timeslot' + Interviewers: + type: array + minItems: 1 + maxItems: 50 + items: + $ref: '#/components/schemas/Interviewer' + Interviewer: + type: object + required: + - id + - status + properties: + id: + $ref: '#/components/schemas/UserId' + status: + $ref: '#/components/schemas/AttendeeStatusValue' + AttendeeStatusValue: + type: string + enum: + - accepted + - declined + - pending + - tentative + CandidateAttendeeStatusValue: + type: string + nullable: true + enum: + - accepted + - declined + - pending + - tentative + - null + deprecated: true + description: This property is deprecated. Use 'timeslot.candidateStatus' instead. + AttendeeStatus: + type: object + required: + - status + properties: + status: + $ref: '#/components/schemas/AttendeeStatusValue' + InterviewType: + type: string + maxLength: 400 + InterviewTypes: + type: array + minItems: 1 + maxItems: 2000 + items: + $ref: '#/components/schemas/InterviewType' + JobPositions: + type: object + required: + - totalFound + - content + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/JobPosition' + JobPosition: + type: object + required: + - id + properties: + id: + type: string + positionId: + type: string + type: + type: string + incumbentName: + type: string + positionOpenDate: + type: string + format: date-time + targetStartDate: + type: string + format: date-time + status: + type: string + JobPositionInput: + type: object + required: + - type + - positionOpenDate + - targetStartDate + properties: + positionId: + type: string + incumbentName: + type: string + type: + type: string + enum: + - NEW + - REPLACEMENT + positionOpenDate: + type: string + format: date-time + targetStartDate: + type: string + format: date-time + JobAdContent: + type: object + required: + - title + properties: + title: + type: string + format: title + minLength: 1 + language: + $ref: '#/components/schemas/JobAdLanguage' + jobAd: + $ref: '#/components/schemas/JobAdSections' + JobAds: + type: array + items: + $ref: '#/components/schemas/JobAdItem' + JobAdItem: + type: object + required: + - id + - title + - language + - jobAd + - createdOn + - updatedOn + - postingStatus + - default + - actions + - creator + - visibility + properties: + id: + type: string + title: + type: string + language: + $ref: '#/components/schemas/Language' + jobAd: + $ref: '#/components/schemas/JobAdSections' + createdOn: + type: string + format: date-time + updatedOn: + type: string + format: date-time + applyUrl: + type: string + format: url + postingStatus: + type: string + enum: + - PUBLISHED + - NOT_PUBLISHED + default: + type: boolean + actions: + type: object + required: + - postings + properties: + postings: + $ref: '#/components/schemas/Action' + creator: + $ref: '#/components/schemas/Identifiable' + visibility: + type: string + enum: + - PUBLIC + - INTERNAL + - PRIVATE + Publication: + type: object + properties: + aggregators: + type: boolean + default: true + visibility: + type: string + default: PUBLIC + enum: + - PUBLIC + - INTERNAL + JobAdPublicationScheduled: + type: object + properties: + postingStatus: + type: string + enum: + - PENDING + JobAdUnpublishScheduled: + type: object + properties: + unpostingStatus: + type: string + enum: + - PENDING + HeadcountUpdateAccepted: + type: object + properties: + status: + type: string + enum: + - PENDING + HeadcountPatchRequest: + type: object + properties: + salaryRange: + $ref: '#/components/schemas/SalaryRange' + PublicationList: + type: object + required: + - content + properties: + content: + type: array + items: + $ref: '#/components/schemas/PublicationListItem' + HiringTeamMembers: + type: object + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/HiringTeamMemberResponse' + HiringTeamMemberRole: + type: string + enum: + - HIRING_MANAGER + - INTERVIEW_TEAM + - RECRUITER + - EXECUTIVE + - COORDINATOR + HiringTeamMember: + allOf: + - $ref: '#/components/schemas/Identifiable' + - type: object + required: + - role + properties: + role: + anyOf: + - $ref: '#/components/schemas/HiringTeamMemberRole' + - type: string + HiringTeamMemberResponse: + allOf: + - $ref: '#/components/schemas/HiringTeamMember' + - type: object + properties: + actions: + type: object + required: + - details + properties: + details: + $ref: '#/components/schemas/Action' + JobNote: + type: object + required: + - content + properties: + content: + type: string + maxLength: 20000 + JobInput: + type: object + required: + - title + - function + - industry + - experienceLevel + - location + properties: + title: + type: string + minLength: 1 + maxLength: 256 + format: title + refNumber: + type: string + maxLength: 63 + targetHiringDate: + type: string + format: date-time + department: + $ref: '#/components/schemas/Identifiable' + location: + $ref: '#/components/schemas/JobLocationInput' + industry: + $ref: '#/components/schemas/Identifiable' + function: + $ref: '#/components/schemas/Identifiable' + typeOfEmployment: + $ref: '#/components/schemas/Identifiable' + experienceLevel: + $ref: '#/components/schemas/Identifiable' + eeoCategory: + $ref: '#/components/schemas/Identifiable' + template: + type: boolean + compensation: + $ref: '#/components/schemas/Compensation' + jobAd: + $ref: '#/components/schemas/JobAd' + properties: + type: array + items: + $ref: '#/components/schemas/JobPropertyInput' + Jobs: + type: object + properties: + limit: + type: integer + offset: + type: integer + nextPageId: + type: string + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/JobSummary' + JobSummary: + allOf: + - $ref: '#/components/schemas/Job' + - type: object + properties: + language: + $ref: '#/components/schemas/Language' + actions: + type: object + required: + - details + properties: + details: + $ref: '#/components/schemas/Action' + JobDetails: + allOf: + - $ref: '#/components/schemas/Job' + - type: object + properties: + targetHiringDate: + type: string + format: date-time + industry: + $ref: '#/components/schemas/Property' + function: + $ref: '#/components/schemas/Property' + typeOfEmployment: + $ref: '#/components/schemas/Property' + experienceLevel: + $ref: '#/components/schemas/Property' + eeoCategory: + $ref: '#/components/schemas/Property' + template: + type: boolean + creator: + $ref: '#/components/schemas/UserIdentity' + compensation: + $ref: '#/components/schemas/Compensation' + jobAd: + $ref: '#/components/schemas/JobAdInput' + properties: + type: array + items: + $ref: '#/components/schemas/JobProperty' + actions: + type: object + properties: + hiringTeam: + $ref: '#/components/schemas/Action' + publications: + $ref: '#/components/schemas/Action' + positions: + $ref: '#/components/schemas/Action' + applyOnWeb: + $ref: '#/components/schemas/Action' + details: + $ref: '#/components/schemas/Action' + JobLocationInput: + type: object + required: + - city + - countryCode + properties: + countryCode: + type: string + minLength: 2 + maxLength: 2 + regionCode: + type: string + minLength: 1 + maxLength: 256 + region: + type: string + minLength: 1 + maxLength: 256 + address: + type: string + minLength: 1 + maxLength: 2000 + postalCode: + type: string + minLength: 1 + maxLength: 32 + city: + type: string + minLength: 1 + maxLength: 128 + remote: + type: boolean + JobAdInput: + type: object + properties: + sections: + $ref: '#/components/schemas/JobAdSections' + language: + $ref: '#/components/schemas/Language' + JobPropertyInput: + allOf: + - $ref: '#/components/schemas/Identifiable' + - type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/JobPropertyValue' + JobStatusHistory: + type: object + required: + - totalFound + - content + properties: + totalFound: + type: integer + content: + type: array + items: + type: object + required: + - status + properties: + changedOn: + type: string + format: date-time + status: + $ref: '#/components/schemas/JobStatus' + actions: + type: object + required: + - user + properties: + user: + $ref: '#/components/schemas/Action' + JobAdLanguage: + type: object + required: + - code + properties: + code: + $ref: '#/components/schemas/LanguageCode' + JobAdSections: + type: object + properties: + companyDescription: + $ref: '#/components/schemas/JobAdSection' + jobDescription: + $ref: '#/components/schemas/JobAdSection' + qualifications: + $ref: '#/components/schemas/JobAdSection' + additionalInformation: + $ref: '#/components/schemas/JobAdSection' + videos: + $ref: '#/components/schemas/JobAdVideos' + sections: + type: object + properties: + companyDescription: + $ref: '#/components/schemas/JobAdSection' + jobDescription: + $ref: '#/components/schemas/JobAdSection' + qualifications: + $ref: '#/components/schemas/JobAdSection' + additionalInformation: + $ref: '#/components/schemas/JobAdSection' + videos: + $ref: '#/components/schemas/JobAdVideosSection' + JobAdSection: + type: object + properties: + title: + type: string + text: + type: string + maxLength: 24999 + JobAdVideos: + type: object + properties: + urls: + type: array + items: + type: string + format: video_url + PublicationListItem: + type: object + required: + - sourceName + - type + - publishedOn + properties: + sourceName: + type: string + type: + type: string + publishedOn: + type: string + format: date-time + unpublishedOn: + type: string + format: date-time + JobStatusUpdate: + type: object + required: + - status + properties: + status: + $ref: '#/components/schemas/ValidJobStatus' + ValidJobStatus: + type: string + enum: + - CREATED + - SOURCING + - FILLED + - INTERVIEW + - OFFER + - CANCELLED + - ON_HOLD + JobStatus: + type: string + enum: + - CREATED + - SOURCING + - FILLED + - INTERVIEW + - OFFER + - CANCELLED + - ON_HOLD + - OTHER + PostingStatus: + type: string + enum: + - PUBLIC + - INTERNAL + - NOT_PUBLISHED + - PRIVATE + Compensation: + type: object + properties: + min: + type: number + format: double + max: + type: number + format: double + currency: + type: string + JobAd: + type: object + properties: + sections: + $ref: '#/components/schemas/JobAdSections' + language: + $ref: '#/components/schemas/Language' + Language: + type: object + required: + - code + properties: + code: + type: string + label: + type: string + labelNative: + type: string + JobProperty: + type: object + required: + - id + - value + properties: + id: + type: string + minLength: 1 + label: + type: string + value: + $ref: '#/components/schemas/JobPropertyValue' + JobPropertyValue: + type: object + properties: + id: + type: string + minLength: 1 + maxLength: 256 + label: + type: string + UserIdentity: + type: object + properties: + id: + type: string + firstName: + type: string + lastName: + type: string + JobApproval: + type: object + properties: + approvalRequestId: + type: string + positions: + type: array + items: + $ref: '#/components/schemas/JobApprovalPosition' + salaryRange: + $ref: '#/components/schemas/SalaryRange' + SalaryRange: + type: object + properties: + min: + type: number + format: double + max: + type: number + format: double + currency: + type: string + JobApprovalPosition: + type: object + properties: + id: + type: string + positionId: + type: string + type: + type: string + incumbentName: + type: string + positionOpenDate: + type: string + format: date-time + targetStartDate: + type: string + format: date-time + status: + type: string + JobApplication: + type: object + properties: + status: + $ref: '#/components/schemas/JobApplicationStatus' + subStatus: + type: string + sourceIdentifier: + $ref: '#/components/schemas/Uuid' + createDate: + type: string + format: date-time + profileId: + $ref: '#/components/schemas/Uuid' + jobId: + $ref: '#/components/schemas/Uuid' + JobApplicationStatus: + type: string + enum: + - LEAD + - NEW + - IN_REVIEW + - INTERVIEW + - OFFERED + - HIRED + - REJECTED + - WITHDRAWN + - TRANSFERRED + Message: + type: object + required: + - content + properties: + content: + type: string + description: Content of the message + minLength: 1 + maxLength: 10000 + correlationId: + type: string + description: >- + CorrelationId is an optional parameter for you to add an additional + ID reference to the note. This will simply be appended onto the note + and will not be tracked/managed/process by SmartRecruiters in any + way. + shareWith: + $ref: '#/components/schemas/ShareWith' + MessageDetails: + type: object + properties: + id: + type: string + shareRequired: + type: boolean + MessagesView: + type: array + items: + $ref: '#/components/schemas/MessageView' + MessageView: + type: object + properties: + content: + type: string + createdOn: + type: string + format: date-time + visibility: + $ref: '#/components/schemas/Visibility' + authorId: + type: string + context: + $ref: '#/components/schemas/Context' + Context: + type: object + properties: + applications: + $ref: '#/components/schemas/Applications' + Applications: + type: array + items: + $ref: '#/components/schemas/Application' + Visibility: + type: string + enum: + - PUBLIC + - INTERNAL + ShareWith: + type: object + description: Sharing and message visibility options + properties: + users: + type: array + items: + type: string + description: List of users to share the message with + hiringTeamOf: + type: array + items: + type: string + description: List of jobs to share the message with its hiring teams + everyone: + type: boolean + description: Set the message to be visible to everyone in a company + openNote: + type: boolean + description: >- + Set the message to be visible to everyone in a company who has + access to #-tagged candidate + Offers: + type: object + required: + - totalFound + - content + properties: + limit: + type: integer + offset: + type: integer + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/Offer' + Offer: + type: object + required: + - id + - status + - createdOn + - updatedOn + - actions + properties: + id: + type: string + status: + type: string + enum: + - CREATED + - PENDING_APPROVAL + - APPROVED + - NOT_APPROVED + - PENDING_ACCEPTANCE + - ACCEPTED + - NOT_ACCEPTED + - ABANDONED + createdOn: + type: string + format: date-time + updatedOn: + type: string + format: date-time + properties: + type: object + additionalProperties: + type: string + actions: + type: object + required: + - candidate + - details + properties: + candidate: + $ref: '#/components/schemas/Action' + job: + $ref: '#/components/schemas/Action' + details: + $ref: '#/components/schemas/Action' + OfferDocument: + type: object + properties: + id: + description: Id of the document + type: string + format: uuid + name: + description: Name of the document + type: string + createdDate: + description: 'Date when the document was created Format: yyyy-MM-ddTHH:mm:ss.SSSZZ' + type: string + format: date-time + OfferDocumentsList: + type: object + properties: + documents: + type: array + items: + $ref: '#/components/schemas/OfferDocument' + isCurrentlySyncing: + description: >- + Indicates if the documents are currently being synced with the + provider. If true, the documents list may be subject to change. + type: boolean + provider: + description: >- + Name of the provider that the documents are synced with. Currently + only DOCUSIGN is supported. + type: string + enum: + - DOCUSIGN + ApiAssessmentComment: + required: + - message + type: object + properties: + id: + type: string + createDate: + type: string + format: date-time + message: + pattern: .*\S+.* + type: string + messageToCandidate: + pattern: .*\S+.* + type: string + assessmentURL: + type: string + author: + $ref: '#/components/schemas/ApiContactPerson' + ApiContactPerson: + type: object + properties: + firstName: + type: string + lastName: + type: string + email: + type: string + phone: + type: string + ApiCommentRequest: + required: + - message + type: object + properties: + message: + pattern: .*\S+.* + type: string + messageToCandidate: + pattern: .*\S+.* + type: string + assessmentURL: + type: string + author: + $ref: '#/components/schemas/ApiContactPerson' + ApiAssessmentCommentListResult: + type: object + properties: + limit: + type: integer + format: int64 + offset: + type: integer + format: int64 + totalFound: + type: integer + format: int64 + content: + type: array + items: + $ref: '#/components/schemas/ApiAssessmentComment' + ApiAssessmentAttachment: + type: object + properties: + id: + type: string + createDate: + type: string + format: date-time + lastUpdateDate: + type: string + format: date-time + fileName: + type: string + ApiAttachment: + required: + - attachment + type: object + properties: + attachment: + type: string + format: binary + ApiAssessmentAttachmentListResult: + type: object + properties: + limit: + type: integer + format: int64 + offset: + type: integer + format: int64 + totalFound: + type: integer + format: int64 + content: + type: array + items: + $ref: '#/components/schemas/ApiAssessmentAttachment' + ApiAssessmentResult: + required: + - description + - title + type: object + properties: + id: + type: string + createDate: + type: string + format: date-time + title: + type: string + description: + type: string + passed: + type: boolean + score: + type: string + author: + $ref: '#/components/schemas/ApiContactPerson' + result: + type: string + resultType: + type: string + enum: + - DOCUMENT + - VIDEO_STREAM + - VIDEO_URL + - URL + - GENERATED_URL + ApiAssessmentResultListResult: + type: object + properties: + limit: + type: integer + format: int64 + offset: + type: integer + format: int64 + totalFound: + type: integer + format: int64 + content: + type: array + items: + $ref: '#/components/schemas/ApiAssessmentResult' + ApiAssessmentOrder: + required: + - candidate + - company + - job + - offer + - requestor + type: object + properties: + id: + type: string + status: + type: string + enum: + - NEW + - IN_PROGRESS + - REJECTED + - COMPLETED + createDate: + type: string + format: date-time + lastUpdateDate: + type: string + format: date-time + requestor: + $ref: '#/components/schemas/ApiContactPerson' + candidate: + $ref: '#/components/schemas/ApiCandidate' + job: + $ref: '#/components/schemas/ApiJob' + company: + $ref: '#/components/schemas/ApiCompany' + offer: + $ref: '#/components/schemas/ApiOffer' + ApiAvailability: + type: object + properties: + expirationDate: + type: string + format: date-time + industries: + type: array + items: + $ref: '#/components/schemas/ApiIndustry' + locations: + type: array + items: + $ref: '#/components/schemas/ApiLocation' + companies: + type: array + items: + type: string + specialOffer: + type: string + ApiCandidate: + type: object + properties: + id: + type: string + uuid: + type: string + firstName: + type: string + lastName: + type: string + email: + type: string + phone: + type: string + addressLine: + type: string + ApiCompany: + type: object + properties: + id: + type: string + name: + type: string + ApiExperienceLevel: + type: object + properties: + id: + type: string + label: + type: string + ApiFunction: + type: object + properties: + id: + type: string + label: + type: string + ApiIndustry: + type: object + properties: + id: + type: string + label: + type: string + ApiJob: + type: object + properties: + id: + type: string + uuid: + type: string + name: + type: string + industry: + $ref: '#/components/schemas/ApiIndustry' + function: + $ref: '#/components/schemas/ApiFunction' + experienceLevel: + $ref: '#/components/schemas/ApiExperienceLevel' + location: + $ref: '#/components/schemas/ApiLocation' + ApiLocation: + type: object + properties: + country: + type: string + region: + type: string + city: + type: string + ApiOffer: + required: + - catalogId + - description + - name + - terms + type: object + properties: + id: + type: string + createDate: + type: string + format: date-time + lastUpdateDate: + type: string + format: date-time + catalogId: + pattern: .*\S+.* + type: string + name: + pattern: .*\S+.* + type: string + description: + pattern: .*\S+.* + type: string + category: + type: string + terms: + $ref: '#/components/schemas/ApiTerms' + status: + type: string + enum: + - ACTIVE + - INACTIVE + - UNDER_REVIEW + - REJECTED + targetMarket: + $ref: '#/components/schemas/ApiTargetMarket' + availability: + $ref: '#/components/schemas/ApiAvailability' + ApiTargetMarket: + type: object + properties: + industries: + type: array + items: + $ref: '#/components/schemas/ApiIndustry' + functions: + type: array + items: + $ref: '#/components/schemas/ApiFunction' + experienceLevels: + type: array + items: + $ref: '#/components/schemas/ApiExperienceLevel' + locations: + type: array + items: + $ref: '#/components/schemas/ApiLocation' + ApiTerms: + required: + - price + type: object + properties: + type: + type: string + enum: + - REFERENCE_CHECK + - BEHAVIORAL_ASSESSMENT + - BACKGROUND_CHECK + - VIDEO_INTERVIEW + - SKILLS_TEST + - INLINE_ASSESSMENT + price: + $ref: '#/components/schemas/Money' + postingPeriod: + type: integer + format: int32 + costPerClick: + $ref: '#/components/schemas/Money' + existingContract: + type: object + additionalProperties: + type: object + Money: + required: + - amount + type: object + properties: + amount: + minimum: 0 + exclusiveMinimum: false + type: number + currencyCode: + type: string + ApiAssessmentOrderListResult: + type: object + properties: + limit: + type: integer + format: int64 + offset: + type: integer + format: int64 + totalFound: + type: integer + format: int64 + content: + type: array + items: + $ref: '#/components/schemas/ApiAssessmentOrder' + ApiAssessmentOrderRequest: + type: object + properties: + status: + type: string + enum: + - NEW + - IN_PROGRESS + - REJECTED + - COMPLETED + requestor: + $ref: '#/components/schemas/ApiContactPerson' + candidate: + $ref: '#/components/schemas/ApiCandidate' + job: + $ref: '#/components/schemas/ApiJob' + company: + $ref: '#/components/schemas/ApiCompany' + offer: + $ref: '#/components/schemas/ApiOffer' + Config: + required: + - id + type: object + properties: + id: + pattern: .*\S+.* + type: string + value: + type: string + ApiConfigListResult: + type: object + properties: + limit: + type: integer + format: int64 + offset: + type: integer + format: int64 + totalFound: + type: integer + format: int64 + content: + type: array + items: + $ref: '#/components/schemas/Config' + ApiListResult: + type: object + properties: + limit: + type: integer + format: int64 + offset: + type: integer + format: int64 + totalFound: + type: integer + format: int64 + content: + type: array + items: + type: object + ApiListResultApiOffer: + type: object + properties: + limit: + type: integer + format: int64 + offset: + type: integer + format: int64 + totalFound: + type: integer + format: int64 + content: + type: array + items: + $ref: '#/components/schemas/ApiOffer' + PostingList: + type: object + properties: + totalFound: + type: integer + limit: + type: integer + offset: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/PostingItem' + PostingItem: + type: object + properties: + id: + type: string + uuid: + type: string + name: + type: string + jobAdId: + type: string + format: uuid + defaultJobAd: + type: boolean + refNumber: + type: string + company: + $ref: '#/components/schemas/Company' + releasedDate: + type: string + format: date-time + location: + $ref: '#/components/schemas/PostingLocation' + industry: + $ref: '#/components/schemas/Industry' + department: + $ref: '#/components/schemas/Department' + function: + $ref: '#/components/schemas/Function' + typeOfEmployment: + $ref: '#/components/schemas/TypeOfEmployment' + experienceLevel: + $ref: '#/components/schemas/ExperienceLevel' + customField: + type: array + items: + $ref: '#/components/schemas/CustomField' + ref: + type: string + creator: + $ref: '#/components/schemas/Creator' + language: + $ref: '#/components/schemas/Language' + visibility: + $ref: '#/components/schemas/Visibility' + Posting: + type: object + properties: + id: + type: string + uuid: + type: string + name: + type: string + jobId: + type: string + format: uuid + jobAdId: + type: string + format: uuid + defaultJobAd: + type: boolean + applyUrl: + type: string + postingUrl: + type: string + referralUrl: + type: string + refNumber: + type: string + company: + $ref: '#/components/schemas/Company' + releasedDate: + type: string + format: date-time + location: + $ref: '#/components/schemas/PostingLocation' + industry: + $ref: '#/components/schemas/Industry' + department: + $ref: '#/components/schemas/Department' + function: + $ref: '#/components/schemas/Function' + typeOfEmployment: + $ref: '#/components/schemas/TypeOfEmployment' + experienceLevel: + $ref: '#/components/schemas/ExperienceLevel' + customField: + type: array + items: + $ref: '#/components/schemas/CustomField' + ref: + type: string + creator: + $ref: '#/components/schemas/Creator' + jobAd: + $ref: '#/components/schemas/JobAdSections' + active: + type: boolean + visibility: + $ref: '#/components/schemas/Visibility' + Company: + type: object + properties: + identifier: + type: string + name: + type: string + PostingLocation: + type: object + properties: + country: + type: string + description: ISO 2-letter country code + region: + type: string + description: >- + This can be state, colloquial name, voivodeship or other area + description + city: + type: string + remote: + type: boolean + description: Indicates if employees can work remotely + latitude: + type: string + longitude: + type: string + Function: + type: object + properties: + id: + type: string + label: + type: string + TypeOfEmployment: + type: object + properties: + id: + type: string + label: + type: string + ExperienceLevel: + type: object + properties: + id: + type: string + enum: + - associate + - director + - entry_level + - executive + - internship + - mid_senior_level + - not_applicable + name: + type: string + CustomField: + type: object + properties: + fieldId: + type: string + fieldLabel: + type: string + valueId: + type: string + valueLabel: + type: string + Creator: + type: object + properties: + name: + type: string + JobAdLanguageCode: + type: string + enum: + - af + - am + - ar + - az + - bg + - bn + - ca + - cs + - cy + - da + - de + - el + - en + - en-GB + - es + - es-MX + - et + - eu + - fa + - fi + - fil + - fr + - fr-CA + - ga + - gl + - gu + - he + - hi + - hr + - hu + - hy + - id + - is + - it + - ja + - ka + - km + - kn + - ko + - lo + - lt + - lv + - ml + - mn + - mr + - ms + - ne + - nl + - 'no' + - pl + - pt + - pt-BR + - ro + - ru + - si + - sk + - sl + - sr + - sv + - sw + - ta + - te + - tr + - uk + - ur + - vi + - zh-CN + - zh-TW + - zu + JobAdVideosSection: + type: object + properties: + title: + type: string + urls: + type: array + items: + type: string + ApiBooleanValue: + type: object + properties: + value: + type: boolean + ApiColumnResponse: + type: object + properties: + entityTypeId: + type: string + entityInstanceId: + type: string + dataPointId: + type: string + dataPointInstanceId: + type: string + dataPointInstanceName: + type: string + dataPointName: + type: string + dataPointType: + type: string + enum: + - ID + - DATE + - NUMBER + - TEXT + - ENUM + - BOOLEAN + - DECIMAL + ApiDatePeriod: + required: + - period + - unit + type: object + properties: + period: + minimum: 1 + type: integer + format: int32 + unit: + type: string + enum: + - DAYS + - WEEKS + - MONTHS + - YEARS + fullPeriod: + type: boolean + ApiDateRange: + type: object + properties: + from: + type: string + format: date-time + to: + type: string + format: date-time + ApiFilterResponse: + type: object + properties: + column: + $ref: '#/components/schemas/ApiColumnResponse' + dateRange: + $ref: '#/components/schemas/ApiDateRange' + datePeriod: + $ref: '#/components/schemas/ApiDatePeriod' + rowValues: + $ref: '#/components/schemas/ApiRowValues' + booleanValue: + $ref: '#/components/schemas/ApiBooleanValue' + ApiReportFileResponse: + type: object + properties: + reportFileId: + type: string + reportId: + type: string + reportFileStatus: + type: string + enum: + - PENDING + - RUNNING + - COMPLETED + - FAILED + scheduleType: + type: string + enum: + - AD_HOC + - SCHEDULED + schedulingDate: + type: string + format: date-time + generationDate: + type: string + format: date-time + requestorId: + type: string + accessGroupId: + type: string + systemRoleId: + type: string + rowEntityTypeId: + type: string + rowEntityInstanceId: + type: string + columns: + type: array + items: + $ref: '#/components/schemas/ApiColumnResponse' + filters: + type: array + items: + $ref: '#/components/schemas/ApiFilterResponse' + errorReason: + type: string + enum: + - UNKNOWN + - MISSING_ACCESS_GROUP + - ACCESS_GROUP_MISMATCH + - MISSING_SYSTEM_ROLE + - SYSTEM_ROLE_MISMATCH + - REPORTING_AREA_RESTRICTED + - INCORRECT_ACCESS_CONFIGURATION + - MISSING_REPORT_CREATOR_EMPLOYEE + ApiRowValues: + required: + - values + type: object + properties: + noneValue: + type: boolean + values: + maxItems: 100 + minItems: 0 + type: array + items: + maxLength: 256 + minLength: 1 + type: string + ApiReportResponse: + type: object + properties: + reportId: + type: string + name: + type: string + rowEntityTypeId: + type: string + rowEntityInstanceId: + type: string + columns: + type: array + items: + $ref: '#/components/schemas/ApiColumnResponse' + filters: + type: array + items: + $ref: '#/components/schemas/ApiFilterResponse' + creationDate: + type: string + format: date-time + modificationDate: + type: string + format: date-time + creatorId: + type: string + modifierId: + type: string + grantees: + uniqueItems: true + type: array + items: + type: string + schedule: + $ref: '#/components/schemas/ApiSchedule' + reportTemplateId: + type: string + reportFormats: + uniqueItems: true + type: array + items: + type: string + enum: + - CSV + - EXCEL + accessGroupId: + type: string + systemRoleId: + type: string + ApiSchedule: + required: + - activityPeriod + - frequency + type: object + properties: + frequency: + type: string + enum: + - ANNUALLY + - MONTHLY + - WEEKLY + - DAILY + activityPeriod: + $ref: '#/components/schemas/ApiDateRange' + schedulingTime: + $ref: '#/components/schemas/ApiTimeRange' + ApiTime: + type: object + properties: + hour: + maximum: 23 + minimum: 0 + type: integer + format: int32 + minute: + maximum: 59 + minimum: 0 + type: integer + format: int32 + ApiTimeRange: + required: + - from + - to + type: object + properties: + from: + $ref: '#/components/schemas/ApiTime' + to: + $ref: '#/components/schemas/ApiTime' + zone: + type: string + ApiReportFilesResponse: + type: object + properties: + nextPage: + type: string + content: + type: array + items: + $ref: '#/components/schemas/ApiReportFileResponse' + ApiReportsResponse: + type: object + properties: + nextPage: + type: string + content: + type: array + items: + $ref: '#/components/schemas/ApiReportResponse' + Review: + type: object + properties: + id: + readOnly: true + $ref: '#/components/schemas/Uuid' + candidateId: + $ref: '#/components/schemas/Uuid' + jobId: + $ref: '#/components/schemas/Uuid' + reviewerId: + $ref: '#/components/schemas/UserId' + overallRating: + type: integer + comment: + type: string + createdOn: + type: string + format: date-time + updatedOn: + type: string + format: date-time + ReviewInput: + type: object + required: + - candidateId + - jobId + - overallRating + properties: + reviewerId: + $ref: '#/components/schemas/UserId' + candidateId: + $ref: '#/components/schemas/Uuid' + jobId: + $ref: '#/components/schemas/Uuid' + overallRating: + type: integer + minimum: 1 + maximum: 5 + comment: + type: string + createdOn: + type: string + format: date-time + ReviewToUpdateInput: + type: object + required: + - reviewerId + properties: + overallRating: + type: integer + minimum: 1 + maximum: 5 + comment: + type: string + reviewerId: + $ref: '#/components/schemas/UserId' + ActivityAssignmentAttachments: + type: object + required: + - attachmentIds + properties: + attachmentIds: + type: array + items: + $ref: '#/components/schemas/Uuid' + Assignments: + type: object + required: + - activityAssignments + - webFormAssignments + - fillablePdfFormAssignments + properties: + activityAssignments: + type: array + items: + $ref: '#/components/schemas/ActivityAssignment' + webFormAssignments: + type: array + items: + $ref: '#/components/schemas/WebFormAssignment' + fillablePdfFormAssignments: + type: array + items: + $ref: '#/components/schemas/FillablePdfFormAssignment' + ActivityAssignment: + type: object + required: + - id + - title + - description + - isFileUploadRequired + - hasSensitiveData + - isHighPriority + properties: + id: + $ref: '#/components/schemas/Uuid' + title: + type: string + description: + type: string + isFileUploadRequired: + type: boolean + hasSensitiveData: + type: boolean + isHighPriority: + type: boolean + WebFormAssignment: + type: object + required: + - id + - title + - description + - hasSensitiveData + - isHighPriority + properties: + id: + $ref: '#/components/schemas/Uuid' + title: + type: string + description: + type: string + hasSensitiveData: + type: boolean + isHighPriority: + type: boolean + FillablePdfFormAssignment: + type: object + required: + - id + - title + - description + - hasSensitiveData + - isHighPriority + - fileName + properties: + id: + $ref: '#/components/schemas/Uuid' + title: + type: string + description: + type: string + hasSensitiveData: + type: boolean + isHighPriority: + type: boolean + fileName: + type: string + WebFormFieldsMetadata: + type: object + required: + - fields + properties: + fields: + type: object + additionalProperties: + $ref: '#/components/schemas/WebFormFieldMetadata' + WebFormFieldMetadata: + type: object + required: + - type + - title + - isRequired + properties: + type: + type: string + title: + type: string + integrationKey: + type: string + hintText: + type: string + isRequired: + type: boolean + WebFormAnswers: + type: object + required: + - answers + properties: + answers: + $ref: '#/components/schemas/WebFormAnswer' + WebFormAnswer: + type: object + required: + - fieldId + - answerValue + properties: + fieldId: + type: string + integrationKey: + type: string + answerValue: + type: array + items: + type: string + NewHire: + type: object + required: + - id + - firstName + - lastName + - email + - socialMedia + properties: + id: + $ref: '#/components/schemas/Uuid' + firstName: + type: string + lastName: + type: string + email: + type: string + phone: + type: string + socialMedia: + $ref: '#/components/schemas/SocialMedia' + SocialMedia: + type: object + properties: + skype: + type: string + linkedIn: + type: string + facebook: + type: string + twitter: + type: string + website: + type: string + indeed: + type: string + OnboardingProcess: + type: object + required: + - id + - newHireId + - jobId + - applicationId + properties: + id: + $ref: '#/components/schemas/Uuid' + newHireId: + $ref: '#/components/schemas/Uuid' + employmentStartDate: + type: string + format: date + jobId: + $ref: '#/components/schemas/Uuid' + applicationId: + $ref: '#/components/schemas/Uuid' + SemanticErrorResponse: + type: object + properties: + message: + type: string + errors: + type: array + items: + $ref: '#/components/schemas/SemanticError' + SemanticError: + type: object + required: + - dataPath + - message + properties: + dataPath: + type: string + message: + type: string + LocationUpdateRequest: + type: object + description: >- + regionCode is not recommended to be used for countries other than the + United States. + properties: + countryCode: + type: string + minLength: 2 + maxLength: 2 + regionCode: + type: string + city: + type: string + minLength: 1 + address: + type: string + format: address + postalCode: + type: string + required: + - city + - countryCode + UserLanguageCode: + type: string + enum: + - bg + - cs + - da + - de + - el + - en + - es + - es-MX + - fi + - fr + - fr-CA + - hr + - hu + - id + - it + - ja + - lt + - nl + - 'no' + - pl + - pt + - pt-BR + - ro + - ru + - sk + - sl + - sr + - sv + - th + - tr + - uk + - vi + - zh-CN + - zh-TW + - ka + description: >- + Language assigned to user account. Language code, can be two-letter for + the standard variant or with additional two letters after a hyphen to + identify a specific locale + Users: + type: object + properties: + limit: + type: integer + nextPageId: + type: string + content: + type: array + items: + $ref: '#/components/schemas/UserListItem' + totalFound: + type: integer + offset: + type: integer + UserListItem: + allOf: + - $ref: '#/components/schemas/User' + - type: object + required: + - language + properties: + id: + type: string + active: + type: boolean + updatedOn: + type: string + format: date-time + User: + type: object + required: + - firstName + - lastName + - role + properties: + email: + type: string + format: email + firstName: + type: string + minLength: 1 + maxLength: 300 + format: name + lastName: + type: string + minLength: 1 + maxLength: 300 + format: name + systemRole: + $ref: '#/components/schemas/SystemRole' + externalData: + type: string + nullable: true + ssoIdentifier: + type: string + nullable: true + ssoLoginMode: + nullable: true + type: string + enum: + - SSO + - PASSWORD + description: >- + User level login mode setting. Possible values are: + + - SSO - user can login only through SSO + + - PASSWORD - user can login only by password + + + Notice: This setting _CAN_ be configured always, but it will be + respected only if: + + - SSO is enabled at company level + + - employee level SSO configuration functionality is enabled for + company + language: + type: object + required: + - code + properties: + code: + $ref: '#/components/schemas/UserLanguageCode' + role: + type: string + enum: + - EMPLOYEE + - RESTRICTED + - STANDARD + - EXTENDED + - ADMINISTRATOR + UserEntity: + allOf: + - required: + - language + - $ref: '#/components/schemas/User' + - type: object + properties: + id: + type: string + active: + type: boolean + updatedOn: + type: string + format: date-time + location: + $ref: '#/components/schemas/Location' + NewUser: + allOf: + - $ref: '#/components/schemas/User' + - type: object + properties: + ssoIdentifier: + type: string + maxLength: 100 + writeOnly: true + password: + type: string + writeOnly: true + location: + $ref: '#/components/schemas/LocationUpdateRequest' + SystemRoles: + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/SystemRole' + SystemRole: + type: object + required: + - id + properties: + id: + type: string + name: + type: string + AccessGroup: + type: object + properties: + id: + type: string + name: + type: string + AccessGroups: + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/AccessGroup' + UserIds: + type: array + maxItems: 5000 + items: + $ref: '#/components/schemas/UserId' + Seats: + type: array + description: >- + List of seat keys. Available values: smartPal, crm, recruitingAI, + textMessaging + items: + type: string + AnyValue: + anyOf: + - type: string + - type: number + - type: integer + - type: boolean + - type: array + items: {} + - type: object + add: + description: add operation. Value can be any JSON value. + properties: + op: + enum: + - add + value: + $ref: '#/components/schemas/AnyValue' + required: + - value + remove: + description: remove operation. Only a path is specified. + properties: + op: + enum: + - remove + replace: + description: replace operation. Value can be any JSON value. + properties: + op: + enum: + - replace + value: + $ref: '#/components/schemas/AnyValue' + required: + - value + move: + description: move operation. "from" is a JSON Pointer. + properties: + op: + enum: + - move + from: + $ref: '#/components/schemas/jsonPointer' + required: + - from + copy: + description: copy operation. "from" is a JSON Pointer. + properties: + op: + enum: + - copy + from: + $ref: '#/components/schemas/jsonPointer' + required: + - from + test: + description: test operation. Value can be any JSON value. + properties: + op: + enum: + - test + value: + $ref: '#/components/schemas/AnyValue' + required: + - value + oneOperation: + oneOf: + - $ref: '#/components/schemas/add' + - $ref: '#/components/schemas/remove' + - $ref: '#/components/schemas/replace' + - $ref: '#/components/schemas/move' + - $ref: '#/components/schemas/copy' + - $ref: '#/components/schemas/test' + JobWebhookPayload: + type: object + required: + - id + properties: + id: + type: string + JobAdWebhookPayload: + type: object + required: + - job_id + - job_ad_id + properties: + job_id: + type: string + job_ad_id: + type: string + JobAdPostingsWebhookPayload: + type: object + required: + - job_id + - job_ad_id + properties: + job_id: + type: string + job_ad_id: + type: string + PositionWebhookPayload: + type: object + required: + - job_id + - position_id + properties: + job_id: + type: string + position_id: + type: string + ApplicationWebhookPayload: + type: object + required: + - job_id + - candidate_id + - application_id + properties: + job_id: + type: string + candidate_id: + type: string + application_id: + type: string + ApplicationAttachmentWebhookPayload: + allOf: + - $ref: '#/components/schemas/ApplicationWebhookPayload' + - type: object + required: + - attachment_id + properties: + attachment_id: + type: string + CandidateWebhookPayload: + type: object + required: + - id + properties: + id: + type: string + OfferWebhookPayload: + type: object + required: + - job_id + - candidate_id + - offer_id + properties: + job_id: + type: string + candidate_id: + type: string + offer_id: + type: string + OfferApprovalWebhookPayload: + type: object + required: + - approval_id + - job_id + - candidate_id + - offer_id + properties: + approval_id: + type: string + job_id: + type: string + candidate_id: + type: string + offer_id: + type: string + JobApprovalWebhookPayload: + type: object + required: + - approval_id + - job_id + properties: + approval_id: + type: string + job_id: + type: string + SecretKeyPayload: + type: object + properties: + secretKey: + type: string + Subscriptions: + type: array + items: + $ref: '#/components/schemas/Subscription' + CallbackRequests: + type: array + items: + $ref: '#/components/schemas/CallbackRequest' + CallbackUrl: + type: string + format: https_url + example: https://server.com/send/callback/here + EmailAddress: + type: string + format: email + example: webhook.alerts@domain.com + CallbackAuthentication: + type: object + oneOf: + - $ref: '#/components/schemas/CallbackBasicAuth' + - $ref: '#/components/schemas/CallbackHeaderAuth' + - $ref: '#/components/schemas/CallbackOAuth2Auth' + example: + type: header + headerName: X-TOKEN + headerValue: J?7HSgUKm7!MPm+EKm^P4BwW4ywRRRVu + CallbackBasicAuth: + type: object + properties: + type: + type: string + enum: + - basic + username: + type: string + password: + type: string + example: + type: basic + username: basic-user + password: jVG8wzKZ%B+r_NkA + CallbackHeaderAuth: + type: object + properties: + type: + type: string + enum: + - header + headerName: + type: string + pattern: ^[Xx]- + description: Custom header name starting with "x-" + headerValue: + type: string + example: + type: header + username: token + password: J?7HSgUKm7!MPm+EKm^P4BwW4ywRRRVu + CallbackOAuth2Auth: + type: object + properties: + type: + type: string + enum: + - oauth2 + clientId: + type: string + description: OAuth2 client id used for token request + clientSecret: + type: string + description: OAuth2 client secret used for token request + tokenServiceUrl: + type: string + format: https_url + description: > + OAuth2 token service url. This serivce is expected to consume + `application/x-www-form-urlencoded` content + + type. The payload will consist of + + + `client_id=provided_client_id&client_secret=provided_client_secret&grant_type=client_credentials` + + + As a result, the service should return json containing information + about access token in form: + + + ``` + + { + access_token: 'access_token_value', + expires_in: 'amount_of_miliseconds' + } + + ```` + description: > + When `CallbackAuthentication` is set to `oauth2`, every call made to the + webhook callback url will incude header + + + `'authorization': Bearer access_token_value` + example: + type: oauth2 + clientId: oauth_client_123 + clientSecret: 9T{Z8OLl<~Si(=c + tokenServiceUrl: https://www.your-token-generator-service.com/tokens + Subscription: + type: object + properties: + id: + type: string + readOnly: true + callbackUrl: + $ref: '#/components/schemas/CallbackUrl' + events: + type: array + items: + $ref: '#/components/schemas/Event' + status: + type: string + readOnly: true + enum: + - inactive + - active + required: + - callbackUrl + - events + CallbackRequest: + type: object + properties: + status: + $ref: '#/components/schemas/CallbackRequestStatus' + timestamp: + description: > + Requests sent before timestamp. Format ISO8601: + yyyy-MM-ddTHH:mm:ss.SSSZZ + type: string + format: date-time + requestDetails: + description: details of callback request + type: object + properties: + url: + description: url to which callback was sent + type: string + body: + description: body of the request in form of stringified json. + type: string + headers: + description: headers set for the request + type: object + CallbackRequestStatus: + type: string + enum: + - successful + - failed + SubscriptionRequest: + type: object + properties: + callbackUrl: + $ref: '#/components/schemas/CallbackUrl' + events: + type: array + uniqueItems: true + minItems: 1 + items: + $ref: '#/components/schemas/EventName' + alertingEmailAddress: + $ref: '#/components/schemas/EmailAddress' + callbackAuthentication: + $ref: '#/components/schemas/CallbackAuthentication' + required: + - callbackUrl + - events + EventName: + type: string + enum: + - job.created + - job.updated + - job.status.updated + - job.hiring-team.updated + - job.ad.created + - job.ad.updated + - job.ad.postings.updated + - position.created + - position.updated + - position.deleted + - application.created + - application.status.updated + - application.fields.updated + - application.onboarding-status.updated + - application.attachment.created + - application.source.updated + - candidate.created + - candidate.updated + - candidate.deleted + - offer.created + - offer.updated + - offer.approval.created + - offer.approval.approved + - offer.approval.rejected + - offer.approval.abandoned + - offer.approval.step.approved + - offer.approval.step.rejected + - offer.approver.skipped + - offer.approver.delegated + - offer.approval.comment.created + - job.approval.created + - job.approval.approved + - job.approval.rejected + - job.approval.abandoned + - job.approval.step.approved + - job.approval.step.rejected + - job.approver.skipped + - job.approver.delegated + - job.approval.comment.created + - review.created + - review.updated + - review.deleted + - application.screening-answers.created + - application.screening-answers.updated + - onboarding.process.started + - onboarding.assignments.high-priority.completed + - onboarding.assignments.completed + ReviewWebhookPayload: + type: object + required: + - application_id + - review_id + properties: + application_id: + type: string + review_id: + type: string + ScreeningQuestionsAnswersWebhookPayload: + type: object + required: + - job_id + - candidate_id + - application_id + properties: + job_id: + type: string + candidate_id: + type: string + application_id: + type: string + OnboardingProcessWebhookPayload: + type: object + required: + - onboarding_process_id + - new_hire_id + properties: + onboarding_process_id: + type: string + new_hire_id: + type: string + OnboardingHighPriorityAssignmentsCompletedWebhookPayload: + type: object + required: + - onboarding_process_id + - new_hire_id + properties: + onboarding_process_id: + type: string + new_hire_id: + type: string + OnboardingAssignmentsCompletedWebhookPayload: + type: object + required: + - onboarding_process_id + - new_hire_id + properties: + onboarding_process_id: + type: string + new_hire_id: + type: string + securitySchemes: + key: + type: apiKey + name: x-smarttoken + in: header + oauth: + type: oauth2 + flows: + authorizationCode: + authorizationUrl: https://www.smartrecruiters.com/identity/oauth/allow + tokenUrl: https://api.smartrecruiters.com/identity/oauth/token + scopes: + approvals_read: Access Approval Requests + approvals_create: Create Approval Requests + approvals_decide: Approve or Reject Approval Requests + assessment_orders_read: Access Assessment Orders + audit_events_read: Access Audit Events + candidates_read: Access Candidates + candidates_create: Create Candidates + candidates_offers_read: Access Offer Terms + candidates_manage: Manage Candidate Status and Properties + candidate_status_read: Access Candidate's status + configuration_read: Access Company Settings + configuration_manage: Manage Company Settings + company_read: Access Company Information + interviews_read: Access Interviews and Timeslots + interviews_write: Create, update and delete Interviews and Timeslots + interview_types_read: Access Interview Types + interview_types_write: Create and delete Interview Types + jobs_read: Access Jobs + jobs_manage: Manage jobs + jobs_publications_manage: Publish Jobs + job_applications_read: Access Job Applications + messages_write: Message Users + messages_manage: Manage Messages + messages_read: Access Messages + reporting_read: Get analytics reports and download report files + reporting_write: Manage/execute analytics reports + reviews_read: Access Reviews + reviews_write: Create, update and delete Reviews + users_read: Access Users + user_me_read: Access information about my user + users_manage: Manage Users + webhooks_read: View webhook subscriptions + webhooks_write: Create new webhook subscription + webhooks_delete: Delete webhook subscription + webhooks_manage: View, create and delete webhook subscriptions + oauth2_master: + type: oauth2 + flows: + clientCredentials: + tokenUrl: https://api.smartrecruiters.com/identity/oauth/token + scopes: + partner_configuration_manage: >- + Allows modification of global configuration and creation of + customer level integrations + oauth2: + type: oauth2 + flows: + clientCredentials: + tokenUrl: https://www.partner.com/identity/oauth/token + scopes: + jobs_read: Allows reading job details + candidates_read: Allows reading candidate details + assessment_result_manage: Allows managing assessment result + packages_view: Allows reading list of assessment packages + orders_manage: Allows creating orders + responses: + ServerError: + description: Unexpected error + SemanticError: + description: Request body is invalid (e.g. values breaks model definition rules) + content: + application/json: + schema: + $ref: '#/components/schemas/SemanticErrorResponse' + SubscriptionNotFound: + description: Subscription not found. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + CallbackAccepted: + description: > + Your server implementation should return this HTTP status code if the + data was received successfully. + + We expect to get the response within 5 seconds. If we don't get response + during this period, we will + + considered webhook delivary as failed. + requestBodies: + OnboardingStatus: + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardingStatus' + description: Onboarding status. + required: true + CandidatePropertyInputValue: + content: + application/json: + schema: + $ref: '#/components/schemas/CandidatePropertyInputValue' + description: Input value of the candidate property. + CandidateInput: + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateInput' + description: Candidate object that needs to be created. + required: true + Resume: + content: + multipart/form-data: + schema: + type: object + properties: + sourceTypeId: + description: Candidate Source type id + type: string + sourceSubTypeId: + description: Candidate Source subtype id + type: string + sourceId: + description: Candidate Source id + type: string + internal: + description: Mark as company employee + type: boolean + file: + description: The resume file to parse. + type: string + format: binary + CandidateStatus: + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateStatus' + description: Candidate Status to be set + BatchConsentRequest: + content: + application/json: + schema: + type: object + required: + - content + properties: + content: + type: array + minItems: 1 + maxItems: 1000 + items: + $ref: '#/components/schemas/ConsentRequest' + BatchCandidatePropertyValue: + content: + application/json: + schema: + type: array + minItems: 1 + maxItems: 100 + items: + $ref: '#/components/schemas/CandidatePropertyValue' + JSONPatch: + content: + application/json-patch+json: + schema: + $ref: '#/components/schemas/JSONPatch' + example: + - op: replace + path: /firstName + value: firstNameValue + - op: add + path: /ssoIdentifier + value: ssoIdentifierValue + description: patch request + Publication: + content: + application/json: + schema: + $ref: '#/components/schemas/Publication' + description: Publication object + JobPositionInput: + content: + application/json: + schema: + $ref: '#/components/schemas/JobPositionInput' + description: Position body object + required: true + JobAdContent: + content: + application/json: + schema: + $ref: '#/components/schemas/JobAdContent' + description: job ad + required: true + JobCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/JobWebhookPayload' + JobAdCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/JobAdWebhookPayload' + JobAdPostingsCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/JobAdPostingsWebhookPayload' + PositionCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/PositionWebhookPayload' + ApplicationCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationWebhookPayload' + ApplicationAttachmentCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationAttachmentWebhookPayload' + CandidateCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateWebhookPayload' + OfferCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/OfferWebhookPayload' + OfferApprovalCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/OfferApprovalWebhookPayload' + JobApprovalCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/JobApprovalWebhookPayload' + ReviewCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/ReviewWebhookPayload' + ScreeningQuestionsAnswersCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/ScreeningQuestionsAnswersWebhookPayload' + OnboardingProcessCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardingProcessWebhookPayload' + OnboardingHighPriorityAssignmentsCompletedCallback: + content: + application/json: + schema: + $ref: >- + #/components/schemas/OnboardingHighPriorityAssignmentsCompletedWebhookPayload + OnboardingAssignmentsCompletedCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardingAssignmentsCompletedWebhookPayload' + parameters: + candidateId: + in: path + description: candidate identifier + name: id + required: true + schema: + type: string + jobId: + in: path + description: job identifier + name: jobId + required: true + schema: + type: string + attachmentId: + in: path + description: attachment identifier + name: attachmentId + required: true + schema: + type: string + jobPropertyId: + in: path + description: job property identifier + name: id + required: true + schema: + type: string + jobPropertyValueId: + in: path + description: job property's value identifier + name: valueId + required: true + schema: + type: string + jobPropertyDependentId: + in: path + description: job property's dependent identifier + name: dependentId + required: true + schema: + type: string + jobPropertyDependentValueId: + in: path + name: dependentValueId + description: job property's dependent value identifier + required: true + schema: + type: string + candidatePropertyId: + in: path + description: candidate property identifier + name: id + required: true + schema: + type: string + candidatePropertyValueId: + in: path + description: candidate property's value identifier + name: valueId + required: true + schema: + type: string + sourceType: + in: path + description: Source type from /configuration/sources + name: sourceType + required: true + schema: + type: string + sourceValueId: + in: path + description: Source id + name: sourceValueId + required: true + schema: + type: string + sourceSubType: + in: query + description: Source SubType from /configuration/sources + name: sourceSubType + required: false + schema: + type: string + language: + in: header + description: language of returned content + name: Accept-Language + required: false + schema: + $ref: '#/components/schemas/LanguageCode' + type: string + default: en + enum: + - af + - am + - ar + - hy + - az + - eu + - bn + - bg + - ca + - zh-CN + - zh-TW + - hr + - cs + - da + - nl + - en-GB + - en + - et + - fi + - fr + - fr-CA + - gl + - ka + - de + - el + - gu + - iw + - hi + - hu + - is + - id + - ga + - it + - ja + - kn + - km + - ko + - lo + - lv + - lt + - ms + - ml + - mr + - mn + - ne + - 'no' + - fa + - fil + - pl + - pt + - pt-BR + - pt-PT + - ro + - ru + - sr + - si + - sk + - sl + - es + - es-MX + - sw + - sv + - ta + - te + - tr + - uk + - ur + - vi + - cy + - zu + description: >- + Language code, can be two-letter for the standard variant or with + additional two letters after a hyphen to identify a specific locale + + + Value "pt-PT" is deprecated and will not work, use "pt" instead. + sourceIdentifier: + in: path + description: Source identifier + name: sourceIdentifier + required: true + schema: + type: string + format: uuid + minLength: 36 + maxLength: 36 + pageId: + in: query + description: identifier of the next page of subscriptions + name: page_id + required: false + schema: + type: string + pageSize: + in: query + description: pageSize + name: pageSize + required: false + schema: + type: integer + minimum: 1 + maximum: 20000 + ApplicationId: + in: query + name: applicationId + description: ID of the application + required: true + schema: + $ref: '#/components/schemas/Uuid' + InterviewId: + in: path + name: interviewId + description: ID of the interview + required: true + schema: + $ref: '#/components/schemas/Uuid' + TimeslotId: + in: path + name: timeslotId + description: ID of the timeslot + required: true + schema: + $ref: '#/components/schemas/Uuid' + UserId: + in: path + name: userId + description: ID of the user + required: true + schema: + $ref: '#/components/schemas/UserId' + InterviewType: + in: path + name: interviewType + description: Interview type name + required: true + schema: + $ref: '#/components/schemas/InterviewType' + jobAdId: + in: path + description: job ad identifier + name: jobAdId + required: true + schema: + type: string + positionId: + in: path + description: position identifier + name: positionId + required: true + schema: + type: string + JobApplicationId: + in: path + name: jobApplicationId + description: ID of job application + required: true + schema: + $ref: '#/components/schemas/Uuid' + MessageId: + in: path + description: identifier of a message + name: id + required: true + schema: + type: string + CandidateId: + in: query + description: identifier of a candidate + name: candidateId + required: true + schema: + type: string + format: guid + JobId: + in: query + description: identifier of a job + name: jobId + required: false + schema: + type: string + format: guid + PageId: + in: query + description: identifier of next page + name: pageId + required: false + schema: + type: string + Limit: + in: query + description: limit + name: limit + required: false + schema: + type: integer + default: 10 + minimum: 1 + maximum: 100 + ReviewId: + in: path + name: reviewId + description: ID of the review + required: true + schema: + $ref: '#/components/schemas/Uuid' + ReviewerId: + in: query + name: reviewerId + description: ID of the reviewer + required: true + schema: + $ref: '#/components/schemas/UserId' + NewHireId: + in: path + name: newHireId + description: ID of the New Hire + required: true + schema: + $ref: '#/components/schemas/Uuid' + OnboardingProcessId: + in: path + name: onboardingProcessId + description: ID of the Onboarding Process + required: true + schema: + $ref: '#/components/schemas/Uuid' + WebFormAssignmentId: + in: path + name: webFormAssignmentId + description: ID of the Web Form Assignment + required: true + schema: + $ref: '#/components/schemas/Uuid' + FillablePdfFormAssignmentId: + in: path + name: fillablePdfFormAssignmentId + description: ID of the Fillable PDF Form Assignment + required: true + schema: + $ref: '#/components/schemas/Uuid' + ActivityAssignmentId: + in: path + name: activityAssignmentId + description: ID of the Activity Assignment + required: true + schema: + $ref: '#/components/schemas/Uuid' + AttachmentId: + in: path + name: attachmentId + description: ID of the Attachment + required: true + schema: + $ref: '#/components/schemas/Uuid' + userId: + in: path + description: user identifier + name: id + required: true + schema: + type: string + systemRoleId: + in: path + description: system role identifier + name: id + required: true + schema: + type: string + accessGroupId: + in: path + description: access group identifier + name: accessGroupId + required: true + schema: + type: string + eventName: + name: event-name + in: header + description: event name + schema: + $ref: '#/components/schemas/EventName' + required: true + eventVersion: + name: event-version + in: header + description: event version + schema: + type: string + required: true + eventId: + name: event-id + in: header + description: event id, remains unchanged during consecutive retried callbacks + schema: + type: string + required: true + smartrecruitersSignature: + name: smartrecruiters-signature + in: header + description: >- + callback signature see at [Create + Signature](#subscriptions/subscriptions.generateSecretKey) + schema: + type: string + required: false + smartrecruitersTimestamp: + name: smartrecruiters-timestamp + in: header + description: >- + timestamp of callback signature see at [Create + Signature](#subscriptions/subscriptions.generateSecretKey) + schema: + type: number + required: false + Link: + name: Link + in: header + description: >- + Link to entity details is provided in the Link header according to + [RFC8288](https://tools.ietf.org/html/rfc8288). The relation type is + "self". + schema: + type: string + required: true + subscriptionId: + in: path + description: subscription identifier + name: id + required: true + schema: + type: string + limit: + in: query + name: limit + description: number of elements to return + schema: + type: integer + default: 10 + minimum: 1 + maximum: 100 + callbackStatus: + in: query + name: callbackStatus + description: status of callback, whan absent all statuses will be returned + schema: + type: string + enum: + - successful + - failed + after: + in: query + name: after + description: > + Requests sent after timestamp. Min value is 30 days ago. Format ISO8601: + yyyy-MM-ddTHH:mm:ss.SSSZZ + schema: + type: string + format: date-time + before: + in: query + name: before + description: > + Requests sent before timestamp. Min value is 30 days ago. Format + ISO8601: yyyy-MM-ddTHH:mm:ss.SSSZZ + schema: + type: string + format: date-time + callbacks: + onJobCreated: + '{$request.body#/callbackUrl}': + post: + summary: Job created webhook callback + operationId: onJobCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Job updated webhook callback + description: > + Events will be triggered when any of the following job properties is + changed: + + - `title` + + - `refNumber` + + - `department` + + - `location` + + - `targetHiringDate` + + - `industry` + + - `function` + + - `typeOfEmployment` + + - `experienceLevel` + + - `eooCategory` + + - `template` + + - any of job `properties` value + operationId: onJobUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobStatusUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Job status updated webhook callback + operationId: onJobStatusUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobHiringTeamUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Job hiring-team updated webhook callback + operationId: onJobHiringTeamUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobAdCreated: + '{$request.body#/callbackUrl}': + post: + summary: Job ad created webhook callback + operationId: onJobAdCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobAdCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobAdUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Job ad updated webhook callback + operationId: onJobAdUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobAdCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobAdPostingsUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Job ad postings updated webhook callback + operationId: onJobAdPostingsUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobAdPostingsCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onPositionCreated: + '{$request.body#/callbackUrl}': + post: + summary: Position created webhook callback + operationId: onPositionCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/PositionCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onPositionUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Position updated webhook callback + operationId: onPositionUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/PositionCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onPositionDeleted: + '{$request.body#/callbackUrl}': + post: + summary: Position deleted webhook callback + operationId: onPositionDeletededCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/PositionCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onApplicationCreated: + '{$request.body#/callbackUrl}': + post: + summary: Application created webhook callback + operationId: onApplicationCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ApplicationCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onApplicationStatusUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Application status updated webhook callback + operationId: onApplicationStatusUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ApplicationCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onApplicationFieldsUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Application fields updated webhook callback + operationId: onApplicationFieldsUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ApplicationCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onApplicationOnboardingStatusUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Application onboarding status updated webhook callback + operationId: onApplicationOnboardingStatusUpdated + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ApplicationCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onApplicationAttachmentCreated: + '{$request.body#/callbackUrl}': + post: + summary: Application attachment created webhook callback + operationId: onApplicationAttachmentCreated + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ApplicationAttachmentCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onApplicationSourceUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Application source updated webhook callback + operationId: onApplicationSourceUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ApplicationCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onCandidateCreated: + '{$request.body#/callbackUrl}': + post: + summary: Candidate created webhook callback + operationId: onCandidateCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/CandidateCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onCandidateUpdated: + '{$request.body#/callbackUrl}': + post: + description: > + Events will be triggered when any of the following candidate + properties is changed: + + - `firstName` + + - `lastName` + + - `email` + + - `phoneNumber` + + - `location` + + - `web` + + - `education` + + - `experience` + + - `internal` + + - `tags` + summary: Candidate updated webhook callback + operationId: onCandidateUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/CandidateCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onCandidateDeleted: + '{$request.body#/callbackUrl}': + post: + summary: Candidate created webhook callback + operationId: onCandidateDeletedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/CandidateCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferCreated: + '{$request.body#/callbackUrl}': + post: + summary: Offer created webhook callback + operationId: onOfferCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Offer updated webhook callback + operationId: onOfferUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferApprovalCreated: + '{$request.body#/callbackUrl}': + post: + summary: Created offer approval webhook callback + operationId: onOfferApprovalCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferApprovalApproved: + '{$request.body#/callbackUrl}': + post: + summary: Approved offer approval webhook callback + operationId: onOfferApprovalApprovedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferApprovalRejected: + '{$request.body#/callbackUrl}': + post: + summary: Rejected offer approval webhook callback + operationId: onOfferApprovalRejectedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferApprovalAbandoned: + '{$request.body#/callbackUrl}': + post: + summary: Abandoned offer approval webhook callback + operationId: onOfferApprovalAbandonedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferApprovalStepApproved: + '{$request.body#/callbackUrl}': + post: + summary: Approved offer approval step webhook callback + operationId: onOfferApprovalStepApprovedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferApprovalStepRejected: + '{$request.body#/callbackUrl}': + post: + summary: Rejected offer approval step webhook callback + operationId: onOfferApprovalStepRejectedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferApproverSkipped: + '{$request.body#/callbackUrl}': + post: + summary: Skipped offer approver webhook callback + operationId: onOfferApproverSkippedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferApproverDelegated: + '{$request.body#/callbackUrl}': + post: + summary: Delegated offer approver webhook callback + operationId: onOfferApproverDelegatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferApprovalCommentCreated: + '{$request.body#/callbackUrl}': + post: + summary: Created offer approval comment webhook callback + operationId: onOfferApprovalCommentCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobApprovalCreated: + '{$request.body#/callbackUrl}': + post: + summary: Created job approval webhook callback + operationId: onJobApprovalCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobApprovalApproved: + '{$request.body#/callbackUrl}': + post: + summary: Approved job approval webhook callback + operationId: onJobApprovalApprovedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobApprovalRejected: + '{$request.body#/callbackUrl}': + post: + summary: Rejected job approval webhook callback + operationId: onJobApprovalRejectedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobApprovalAbandoned: + '{$request.body#/callbackUrl}': + post: + summary: Abandoned job approval webhook callback + operationId: onJobApprovalAbandonedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobApprovalStepApproved: + '{$request.body#/callbackUrl}': + post: + summary: Approved job approval step webhook callback + operationId: onJobApprovalStepApprovedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobApprovalStepRejected: + '{$request.body#/callbackUrl}': + post: + summary: Rejected job approval step webhook callback + operationId: onJobApprovalStepRejectedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobApproverSkipped: + '{$request.body#/callbackUrl}': + post: + summary: Skipped job approver webhook callback + operationId: onJobApproverSkippedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobApproverDelegated: + '{$request.body#/callbackUrl}': + post: + summary: Delegated job approver webhook callback + operationId: onJobApproverDelegatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobApprovalCommentCreated: + '{$request.body#/callbackUrl}': + post: + summary: Created job approval comment webhook callback + operationId: onJobApprovalCommentCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onReviewCreated: + '{$request.body#/callbackUrl}': + post: + summary: Review created webhook callback + operationId: onReviewCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ReviewCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onReviewUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Review updated webhook callback + operationId: onReviewUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ReviewCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onReviewDeleted: + '{$request.body#/callbackUrl}': + post: + summary: Review deleted webhook callback + operationId: onReviewDeletedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ReviewCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onApplicationScreeningAnswersCreated: + '{$request.body#/callbackUrl}': + post: + summary: Screening answers created + operationId: onApplicationScreeningAnswersCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ScreeningQuestionsAnswersCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onApplicationScreeningAnswersUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Screening answers updated + operationId: onApplicationScreeningAnswersUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ScreeningQuestionsAnswersCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOnboardingProcessStarted: + '{$request.body#/callbackUrl}': + post: + summary: Onboarding process started + operationId: onOnboardingProcessStartedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OnboardingProcessCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOnboardingAssignmentsHighPriorityCompleted: + '{$request.body#/callbackUrl}': + post: + summary: Onboarding high priority assignments were completed + operationId: onOnboardingAssignmentsHighPriorityCompletedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: >- + #/components/requestBodies/OnboardingHighPriorityAssignmentsCompletedCallback + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOnboardingAssignmentsCompleted: + '{$request.body#/callbackUrl}': + post: + summary: Onboarding all assignments were completed + operationId: onOnboardingAssignmentsCompletedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OnboardingAssignmentsCompletedCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' +x-readme: + explorer-enabled: true + proxy-enabled: true + samples-enabled: true +_id: 63529e73531509001de49942 +tags: + - name: subscriptions + description: Manage your event subscriptions diff --git a/sdks/db/fixed-specs-cache/bl-ink-fixed-spec.yaml b/sdks/db/fixed-specs-cache/bl-ink-fixed-spec.yaml index 30e0a9c6e..23abd3399 100644 --- a/sdks/db/fixed-specs-cache/bl-ink-fixed-spec.yaml +++ b/sdks/db/fixed-specs-cache/bl-ink-fixed-spec.yaml @@ -5,21 +5,21 @@ publishJson: clientName: BlInk metaDescription: >- BL.INK powers shortened URLs and QR codes with unlimited data and - flexibility. + flexibility. With BL.INK, you'll create thousands of custom links that capture unlimited data points so you can measure every user touchpoint and perfect every - interaction. + interaction. Everyone on your team can create perfect data to accurately measure every element of marketing attribution. Every customer than visits your link gets - the information they need, every time, with no broken links. + the information they need, every time, with no broken links. Need to change the link when a contest ends, or show the page in the user's - own language? It's easy with BL.INK. + own language? It's easy with BL.INK. No other URL shortener or QR code creator integrates with your existing diff --git a/sdks/db/fixed-specs-cache/recruiterflow-fixed-spec.yaml b/sdks/db/fixed-specs-cache/recruiterflow-fixed-spec.yaml index 126a487be..7040874f7 100644 --- a/sdks/db/fixed-specs-cache/recruiterflow-fixed-spec.yaml +++ b/sdks/db/fixed-specs-cache/recruiterflow-fixed-spec.yaml @@ -7,7 +7,7 @@ publishJson: Recruiterflow is a dedicated Applicant Tracking, CRM and Recruiting platform for Ambitious Recruiting & executive search firms. What makes Recruiterflow different from other ATS and recruiting CRM products, is Recruiting - automation, simplicity and ease of use. + automation, simplicity and ease of use. It offers drag-and-drop workflows, email and text messaging, API @@ -22,7 +22,7 @@ publishJson: pipeline, post jobs across multiple job boards and track candidates, write personalized well-crafted email sequences, deliver candidate experience without extra efforts and get a detailed insight about the performance of - your team and recruiting effort. + your team and recruiting effort. You can review your recruiting strategy and performance in real time using diff --git a/sdks/db/fixed-specs-cache/smart-recruiters-fixed-spec.yaml b/sdks/db/fixed-specs-cache/smart-recruiters-fixed-spec.yaml new file mode 100644 index 000000000..44e08d1bc --- /dev/null +++ b/sdks/db/fixed-specs-cache/smart-recruiters-fixed-spec.yaml @@ -0,0 +1,20122 @@ +publishJson: + company: SmartRecruiters + serviceName: false + sdkName: smart-recruiters-{language}-sdk + clientName: SmartRecruiters + metaDescription: >- + SmartRecruiters is a California-based cloud platform that offers solutions + including talent sourcing, recruitment and applicant tracking for + businesses. + apiStatusUrls: inherit + homepage: smartrecruiters.com + developerDocumentation: developers.smartrecruiters.com/reference + categories: + - recruiting + - hr + - applicant_tracking +rawSpecString: | + openapi: 3.0.2 + info: + title: Webhooks + contact: + name: SmartRecruiters + url: https://developers.smartrecruiters.com + version: '201910.4' + description: SmartOnboard Public API + servers: + - url: https://api.smartrecruiters.com/webhooks-api/v201907 + paths: + /postings/{uuid}/candidates: + post: + tags: + - Application API + summary: Create a New Candidate Application + description: >- + Operation is done on behalf of a candidate – they can access and edit + the data, including attachments + externalDocs: + url: https://developers.smartrecruiters.com/docs/post-an-application + operationId: createCandidate + parameters: + - name: uuid + in: path + description: Posting UUID + required: true + schema: + pattern: >- + [a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12} + type: string + requestBody: + description: New candidate data + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiRequest' + required: true + responses: + '200': + description: Successful request + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiResponse' + '400': + description: Invalid request + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + '401': + description: Unauthenticated + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + '429': + description: 'Too Many Requests ' + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + security: + - key: [] + /postings/{uuid}/candidates/{candidateId}/status: + get: + tags: + - Application API + summary: Get candidate status + externalDocs: + url: >- + https://developers.smartrecruiters.com/docs/get-candidate-application-status + operationId: getApplicationStatus + parameters: + - name: uuid + in: path + description: Posting UUID + required: true + schema: + pattern: >- + [a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12} + type: string + - name: candidateId + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful request + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationStatusInfo' + '400': + description: Invalid request + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + '401': + description: Unauthenticated + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + '429': + description: 'Too Many Requests ' + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + security: + - key: [] + /postings/{uuid}/configuration: + get: + tags: + - Application API + summary: Get application configuration for posting + description: > + Returns application configuration for posting. + + Configuration contains screening questions, privacy policies and + settings. + + Optionally, conditional questions can be included in the response. + externalDocs: + url: >- + https://developers.smartrecruiters.com/docs/get-application-screening-questions-and-privacy-policies + operationId: getApplyConfigurationForPosting + parameters: + - name: Accept-Language + in: header + description: Language for screening questions. By default 'en'. + schema: + type: string + - name: uuid + in: path + description: Posting UUID + required: true + schema: + pattern: >- + [a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12} + type: string + - name: conditionalsIncluded + in: query + description: > + Specifies whether conditional questions should be returned in the + response. 'false' if not specified + + - Only available for BETA customers + schema: + type: boolean + responses: + '200': + description: Successful request + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyConfiguration' + '400': + description: Invalid request + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + '401': + description: Unauthenticated + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + '429': + description: 'Too Many Requests ' + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + security: + - key: [] + /approvals/{approvalRequestId}: + get: + summary: Get approval request by id + parameters: + - name: approvalRequestId + in: path + description: Approval request identifier + required: true + schema: + type: string + responses: + '200': + description: Found approval request + content: + application/json: + schema: + $ref: '#/components/schemas/ApprovalRequest' + '404': + description: | + with code + * **APPROVAL_REQUEST_NOT_FOUND** when approval request is not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + operationId: approvals.getById + security: + - key: [] + - oauth: + - approvals_read + tags: + - approvals + /approvals/{approvalRequestId}/comments: + get: + summary: Get comments for given approval request + parameters: + - name: approvalRequestId + in: path + description: Approval request identifier + required: true + schema: + type: string + responses: + '200': + description: Found comments + content: + application/json: + schema: + $ref: '#/components/schemas/Comments' + '404': + description: | + with code + * **APPROVAL_REQUEST_NOT_FOUND** when approval request is not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + operationId: approvals.comments.get + security: + - key: [] + - oauth: + - approvals_read + tags: + - approvals + post: + summary: Add comment to given approval request + parameters: + - name: approvalRequestId + in: path + description: Approval request identifier + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + type: object + required: + - content + - authorId + properties: + content: + type: string + maxLength: 10000 + authorId: + type: string + responses: + '201': + description: Created comment + content: + application/json: + schema: + $ref: '#/components/schemas/Comment' + '400': + description: > + + * **COMMENT_CONTAINS_ILLEGAL_CHARACTERS** when comment contains + illegal characters + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: | + + * **UNAUTHORIZED_ACCESS** when no permissions to add a comment + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + * **APPROVAL_REQUEST_NOT_FOUND** when approval request is not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Input validation fails + operationId: approvals.comments.create + security: + - key: [] + - oauth: + - approvals_read + tags: + - approvals + /approvals: + get: + summary: Get pending approvals requests where you are an approver. + description: The max number of returned approval requests is 100. + parameters: + - name: pageId + description: > + Identifier for the paged list of approval requests. To get the first + page of approval request, leave it blank. + in: query + required: false + schema: + type: string + responses: + '200': + description: Approval requests + content: + application/json: + schema: + $ref: '#/components/schemas/ApprovalRequests' + headers: + Link: + schema: + type: string + description: | + Links to related resources, in the format defined by + [RFC 8288](https://tools.ietf.org/html/rfc8288). + This will include a link with relation type `next` to the + next page, if there is a next page. + '400': + description: | + Unable to retrieve approval requests with codes + * **INVALID_PAGE_ID** when pageId is incorrect + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + operationId: approvals.get + security: + - key: [] + - oauth: + - approvals_read + tags: + - approvals + post: + summary: Create approval request + description: > + The new approval request will be created based on approval request with + provided baseId. If base approval request is pending, it will be + abandoned. The newly created request will contain new id, type, decision + mode and steps, as well as PENDING statuses and decisions. + requestBody: + content: + application/json: + schema: + type: object + required: + - baseId + - type + - decisionMode + - steps + properties: + baseId: + $ref: '#/components/schemas/ApprovalRequestId' + type: + $ref: '#/components/schemas/Type' + decisionMode: + $ref: '#/components/schemas/DecisionMode' + steps: + description: Steps to complete approval + type: array + minItems: 1 + items: + $ref: '#/components/schemas/StepInput' + responses: + '201': + description: Approval request created + content: + application/json: + schema: + $ref: '#/components/schemas/ApprovalRequest' + '400': + description: > + Unable to create approval request with codes + + * **BASE_ID_NOT_FOUND** when base approval request id doesn't exist + + * **APPROVER_ID_NOT_FOUND** when at least one of approver ids + doesn't exist + + * **INVALID_DECISION_MODE** when decisionMode is `all` and type is + `sequential`. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: > + Unable to create approval request with codes + + * **UNAUTHORIZED_ACCESS** when no permissions to create approval + request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + operationId: approvals.create + security: + - key: [] + - oauth: + - approvals_create + tags: + - approvals + /approvals/{approvalRequestId}/approve-decisions: + post: + summary: Approve the approval request by id + parameters: + - name: approvalRequestId + in: path + description: Approval request identifier + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + type: object + required: + - approverId + properties: + approverId: + type: string + responses: + '204': + description: Approval request approved + '400': + description: > + with code + + * **APPROVAL_REQUEST_NOT_FOUND** + + * **APPROVAL_COMPLETED** when approval request is already approved, + rejected or abandoned + + * **DECISION_NOT_YET_ALLOWED** when trying to take decision before + previous step completion + + * **APPROVER_NOT_ALLOWED** when user is not an approver in given + approval request + + * **DECISION_ALREADY_TAKEN** when approver is trying to modify + already taken decision + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + * **APPROVAL_REQUEST_NOT_FOUND** when approval request is not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + operationId: approvals.approve + security: + - key: [] + - oauth: + - approvals_read + - approvals_decide + tags: + - approvals + /approvals/{approvalRequestId}/reject-decisions: + post: + summary: Reject the approval request by id + parameters: + - name: approvalRequestId + in: path + description: Approval request identifier + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + type: object + required: + - approverId + - comment + properties: + approverId: + type: string + comment: + type: string + responses: + '204': + description: Approval request rejected + '400': + description: > + with code + + * **APPROVAL_REQUEST_NOT_FOUND** + + * **APPROVAL_COMPLETED** when approval request is already approved, + rejected or abandoned + + * **DECISION_NOT_YET_ALLOWED** when trying to take decision before + previous step completion + + * **APPROVER_NOT_ALLOWED** when user is not an approver in given + approval request + + * **DECISION_ALREADY_TAKEN** when approver is trying to modify + already taken decision + + * **COMMENT_IS_REQUIRED** when approver is trying reject without the + comment + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + * **APPROVAL_REQUEST_NOT_FOUND** when approval request is not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + operationId: approvals.reject + security: + - key: [] + - oauth: + - approvals_read + - approvals_decide + tags: + - approvals + /partner/configuration: + get: + tags: + - configuration + summary: get partner configuration + operationId: getPartnerConfig + responses: + '200': + description: Partner configuration + content: + application/json: + schema: + $ref: '#/components/schemas/PartnerConfiguration' + '401': + description: Unauthorized request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Request missed required scopes + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Configuration does not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - oauth2_master: + - partner_configuration_manage + put: + tags: + - configuration + summary: saves configuration for partner + description: Endpoint for saving partner's configuration. + operationId: savePartnerConfig + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PartnerConfigurationRequest' + responses: + '200': + description: Configuration created + content: + application/json: + schema: + $ref: '#/components/schemas/PartnerConfiguration' + '400': + description: Invalid configuration provided + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Request missed required scopes + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - oauth2_master: + - partner_configuration_manage + /integration/company/{companyId}: + post: + tags: + - integration + summary: enable the company integration + description: |2- + + Set up integration. + 1. Validates if token has client_credentials_write scope (created using master credentials) + 2. Validates if company gave consent for integration with partner + 3. Saves credentials send by the partner + 4. Created credentials for current company + 5. Sends created credentials back to partner + operationId: setUpIntegration + parameters: + - name: companyId + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ClientCredentials' + responses: + '200': + description: Customer-level integration credentials + content: + application/json: + schema: + $ref: '#/components/schemas/ClientCredentials' + '400': + description: Invalid request body + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + Request missed required scopes or company did not give consent for + integration + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Partner configuration does not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Partner already integrated for company + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - oauth2_master: + - partner_configuration_manage + /orders/{orderId}/results: + patch: + tags: + - result + summary: updates package result + description: >- + Updates results for package ordered. Follows RFC 7396 rules to describe + set of modifications. + operationId: packageResultUpdate + parameters: + - name: orderId + in: path + description: Order ID + required: true + schema: + type: string + format: uuid + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PackageResult' + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PackageResult' + '400': + description: Invalid result partial update provided + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Request missed required scopes + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Order with given id does not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '415': + description: Unsupported payload format + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - oauth2: + - assessment_result_manage + /orders/{orderId}/results/attachment: + post: + tags: + - result + summary: add attachment to order + description: >- + Add attachment to order. Adding attachment to inline assessment orders + is not supported. + operationId: addAttachmentToOrder + parameters: + - name: orderId + in: path + description: Order ID + required: true + schema: + type: string + format: uuid + requestBody: + content: + multipart/form-data: + schema: + type: string + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: '#/components/schemas/AttachmentResult' + '401': + description: Unauthorized request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Request missed required scopes + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Order with given id does not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /integration: + get: + tags: + - integration + summary: Shows consent form on partner side + description: >- + Endpoint to which SmartRecruiters will send request for consent. + + After that Partner will: + + 1. Create client credentials which may be used on SmartRecruiters side + + 2. Retrieve access_token using master client credentials + + 3. Send generated credentials using oauth token obtained + + In return SmartRecruiters would send client credentials for company + setting up the integration. + operationId: askForConsent + parameters: + - name: companyId + in: query + description: id of company setting up the integration + schema: + type: string + responses: + '200': + description: Page with consent for customer admin + content: + text/html: + schema: + type: string + /integrations/companies/{companyId}: + delete: + tags: + - integration + summary: Removes integration on partner side + operationId: deleteIntegration + parameters: + - name: companyId + in: path + description: id of company with integration + required: true + schema: + type: string + responses: + '204': + description: No Content + content: + application/json: + schema: + $ref: '#/components/schemas/Unit' + /packages: + get: + tags: + - packages + summary: Retrieves a list of packages + operationId: listPackages + parameters: + - name: requester + in: header + description: Information about recruiter requesting list of packages + required: false + schema: + $ref: '#/components/schemas/Requester' + - name: country-code + in: query + description: country code + required: false + schema: + type: string + - name: region-abbr + in: query + description: region abbreviation + required: false + schema: + type: string + - name: city + in: query + description: city + required: false + schema: + type: string + - name: address + in: query + description: address + required: false + schema: + type: string + - name: postal-code + in: query + description: postal code + required: false + schema: + type: string + - name: remote + in: query + description: describe whether job is remote or not + required: false + schema: + type: boolean + - name: partner-field-id + in: query + description: >- + Example partner field. Partner defines list of allowed fields in + configuration. Client binds job fields in his configuration. All + fields with non-empty values will be included in this call. + required: false + schema: + type: string + responses: + '200': + description: List of assessment packages + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/AssessmentPackage' + '204': + description: Returned when there are not packages to present + '400': + description: Invalid requester data in header + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Request missed required scopes + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - oauth2: + - packages_view + /packages/{assessmentPackageId}: + get: + tags: + - packages + summary: Retrieves a package by id + operationId: getPackageById + parameters: + - name: assessmentPackageId + in: path + required: true + schema: + type: string + responses: + '200': + description: Assessment package + content: + application/json: + schema: + $ref: '#/components/schemas/AssessmentPackage' + '401': + description: Unauthorized request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Request missed required scopes + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: No assessment package with given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - oauth2: + - packages_view + /packages/orders: + post: + tags: + - orders + summary: Orders assessment package for candidate + operationId: ordersAssessmentPackage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AssessmentPackageOrderRequest' + responses: + '202': + description: Order acceptance + content: + application/json: + schema: + $ref: '#/components/schemas/Unit' + '401': + description: Unauthorized request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Request missed required scopes + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: There is no package which was ordered + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - oauth2: + - orders_modify + /packages/inline/orders: + post: + tags: + - orders + summary: Orders inline assessment package for candidate + operationId: ordersInlineAssessmentPackage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/InlineAssessmentPackageOrderRequest' + responses: + '200': + description: Response containing url to inline assessment + content: + application/json: + schema: + $ref: '#/components/schemas/InlineAssessmentPackageResponse' + '401': + description: Unauthorized request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Request missed required scopes + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: There is no package which was ordered + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - oauth2: + - orders_modify + /oauth/token: + post: + tags: + - token + summary: Exchange credentials for an access token + description: >- + SmartRecruiters will call this endpoint to exchange the credentials + received from Partner for an access token. + operationId: getToken + requestBody: + content: + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TokenInput' + responses: + '200': + description: Access token + content: + application/json: + schema: + $ref: '#/components/schemas/AccessToken' + '400': + description: Error Response https://tools.ietf.org/html/rfc6749#section-5.2 + content: + application/json: + schema: + $ref: '#/components/schemas/TokenErrorResponse' + /assessment-orders: + get: + summary: Retrieves all assessment orders for specified application + parameters: + - in: query + name: applicationId + description: ID of the application + required: true + schema: + $ref: '#/components/schemas/Uuid' + responses: + '200': + description: Assessment orders were retrieved + content: + application/json: + schema: + $ref: '#/components/schemas/AssessmentOrders' + '401': + description: > + with codes: + + * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is not + authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **APPLICATION_NOT_FOUND** when there is no application with given + id + + * **MISSING_COMPANY_INTEGRATION** when no integration with + assessment partner was found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + operationId: orders.getList + security: + - key: [] + - oauth: + - assessment_orders_read + tags: + - assessment orders + /audit-events: + get: + responses: + '200': + description: A single page of audit events + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/Events' + '403': + description: Audit events access forbidden. ADMINISTRATOR role is required. + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Data collected via the Audit API will be retained at least 26 months. + When `eventDateAfter` and `eventDateBefore` are not set, by default, the + time range is set to the last 7 days. Below is the list of the events + that are currently exposed in the API: + + * **USER_ACCOUNT_ACTIVATED** - user account has been activated, user can + now login to the system + + * **USER_ACCOUNT_CREATED** - user account has been created, in order to + log in to the system account has to be activated first + + * **USER_ACCOUNT_DEACTIVATED** - user account has been deactivated, + logging possibility disabled for the user + + * **USER_ACCOUNT_UPDATED** - user account has been modified + + * **USER_AUTHENTICATION_INVALID_CREDENTIALS** - user authentication + failed due to invalid credentials. + + Additional context represents the type of the authentication method: + + ```json + + context: { + authenticationType: "PASSWORD" + } + + ``` + + * **USER_AUTHENTICATION_SUCCESS** - user authentication succeeded + + Additional context represents the type of the authentication method: + + ```json + + context: { + authenticationType: "PASSWORD", + officeName: "string" //Optional + } + + ``` + + * **USER_PASSWORD_CHANGED** - user password has been changed + + * **USER_PASSWORD_RESET** - user password has been reset + + * **USER_ROLE_CHANGED** - user role has been changed, + + Additional context represents previous and current role of the user: + + ```json + + context: { + currentRole: "RESTRICTED", + previousRole: "STANDARD" + } + + ``` + + * **USER_API_KEY_RENEWED** - user api-key has been renewed + + * **CREDENTIALS_CREATED** - api-key or OAuth credentials has been + renewed + + * **CREDENTIALS_CHANGED** - api-key or OAuth credentials has been + modified + + * **CREDENTIALS_REVOKED** - api-key or OAuth credentials has been + modified + + Additional context represents credential type: + + ```json + + context: { + credentialType: "string" + } + + ``` + + * **SEARCH** - user performed search + + For entityType CANDIDATE additional context represents candidate search + event: + + ```json + + context: { + keyword: [ + "test" + ], + jobTitles: [ + "Freelancer", + "Software Engineer" + ], + jobNames: [ + "Java Developer, San Francisco" + ], + companies: [ + "SmartRecruiters" + ], + schools: [ + "University of Science and Technology" + ] + ``` + + * **JOB_DELETED** - job was deleted + + Additional context represents the deleted job: + + ```json + + context: { + jobName: "string", + jobRefNumber: "string" + } + + ``` + + * **HIRING_TEAM_MEMBER_ADDED** - a new member was added to the hiring + team of the job + + Additional context represents the new member: + + ```json + + context: { + userId: "string", + roleId: "string", + roleName: "string" + } + + ``` + + * **HIRING_TEAM_MEMBER_REMOVED** - a member was removed from the hiring + team of the job + + Additional context represents the removed member: + + ```json + + context: { + userId: "string" + } + + ``` + + * **HIRING_TEAM_ROLE_UPDATED** - role of one of the hiring team members + was updated + + Additional context represents previous and current role of the updated + member: + + ```json + + context: { + userId: "string", + previousRoleId: "string", + previousRoleName: "string", + currentRoleId: "string", + currentRoleName: "string" + } + + ``` + + * **APPROVAL_DELEGATION_FROM_USER_CREATED** - a user created an approval + delegation + + * **APPROVAL_DELEGATION_FROM_USER_CANCELLED** - a user cancelled an + approval delegation + + * **APPROVAL_DELEGATION_TO_USER_CREATED** - an approval delegation to a + user (a delegate) has been created + + * **APPROVAL_DELEGATION_TO_USER_CANCELLED** - an approval delegation to + a user (a delegate) has been created + + Additional context represents approval delegation event's details: + + ```json + + context: { + originalApproverId: "string", + delegateApproverId: "string", + startDate: date, + endDate: date + } + + ``` + + * **JOB_APPROVAL_REQUESTED** - a job approval was requested + + Additional context represents approval modified event's details: + + ```json + + comment: { + text: 'string', + authorId: 'string', + date: 'string', + + } + + context: { + comments: [comment] + } + + ``` + + * **JOB_APPROVAL_APPROVED** - a job approval was approved + + Additional context represents approval modified event's details: + + ```json + + comment: { + text: 'string', + authorId: 'string', + date: 'string', + + } + + context: { + comments: [comment] + } + + ``` + + * **JOB_APPROVAL_REJECTED** - a job approval was rejected + + Additional context represents approval modified event's details: + + ```json + + comment: { + text: 'string', + authorId: 'string', + date: 'string', + + } + + context: { + comments: [comment] + } + + ``` + + * **JOB_APPROVAL_ABANDONED** - a job approval was abandoned + + Additional context represents approval modified event's details: + + ```json + + comment: { + text: 'string', + authorId: 'string', + date: 'string', + + } + + context: { + comments: [comment] + } + + ``` + + * **OFFER_APPROVAL_APPROVED** - an offer approval was approved + + * **OFFER_APPROVAL_REJECTED** - an offer approval was rejected + + * **OFFER_APPROVAL_ABANDONED** - an offer approval was abandoned + + Additional context represents approval event's details. + `type` is one of the values: + * sequential - consent of every approver is required, approval requests are sent one by one in a defined order. + * parallel - all approvers can approve at the same time. + + `decisionMode` is one of the values: + * all - consent of every approver is required + * any - consent of a single approver is enough + + ```json + + decision: { + decidedOn: integer, + decision: 'string', + decidedBy: 'string', + userId: 'string' + } + + context: { + approvalRequestId: 'string' + approvers: [decision] + type: 'string', + decisionMode: 'string' + } + + ``` + + * **JOB_APPROVAL_STEP_APPROVED** - a job approval step was approved by + author + + * **JOB_APPROVAL_STEP_REJECTED** - a job approval step was rejected by + author + + Additional context represents approval step modified event's details: + + ```json + + context: { + approver: 'string' + comment: 'string' + } + + ``` + + * **JOB_APPROVAL_STEP_SKIPPED** - an author skipped approver for a job + approval step + + * **OFFER_APPROVAL_STEP_APPROVED** - an offer approval step was approved + by author + + * **OFFER_APPROVAL_STEP_REJECTED** - an offer approval step was rejected + by author + + * **OFFER_APPROVAL_STEP_SKIPPED** - an author skipped approver for an + offer approval step + + Additional context represents approval step modified event's details: + + ```json + + context: { + approvalRequestId: "string" + approver: "string", + reasonId: "string", + comment: "string" + } + + ``` + + * **JOB_APPROVAL_STEP_DELEGATED** - job approval step was delegated to + new approver + + * **OFFER_APPROVAL_STEP_DELEGATED** - job approval step was delegated to + new approver + + Additional context represents approval step delegated event's details: + + ```json + + context: { + approvalRequestId: "string" + originalApproverId: "string", + delegateApproverId: "string" + } + + ``` + + * **OFFER_ACCEPTED** - offer was accepted. Returns viaIntegration which + is set to true if offer was accepted via third party integration like + Docusign + + ```json + + context: { + viaIntegration: "boolean" + } + + ``` + + * **OFFER_DECLINED** - offer was declined. Returns viaIntegration which + is set to true if offer was accepted via third party integration like + Docusign + + ```json + + context: { + viaIntegration: "boolean" + } + + ``` + + * **CANDIDATE_PERSONAL_DATA_MODIFIED** - Candidate personal data were + modified. Only Web Application actions are audited. Event doesn't cover + Customer API. Personal data covers: + * First Name + * Last Name + * E-mail + * Phone + * Location + * Phone Number + * Social Links (Skype Id, Indeed Id, Twitter account, LinkedIn profile, Facebook profile, Websites) + * **CANDIDATE_PROFILE_MODIFIED** - Candidate profile data were modified. + Only Web Application actions are audited. Event doesn't cover Customer + API and Mobile application. + + * **CANDIDATE_DELETED** - Candidate was deleted. The authorType property + can be used to distinguish deletion nature. Following values are + possible: + * USER - candidate was deleted by user + * SYSTEM - candidate was deleted by compliance mechanism (due to retention period end or lack of consent) + * CANDIDATE - candidate deleted oneself + + * **CANDIDATE_PROFILE_OPENED** - Candidate profile was opened by user. + Only Web Application actions are audited. Event doesn't cover Customer + API and Mobile application. + + * **CANDIDATE_EEO_FILLED** - Missing Candidate EEO informations were + filled by user. + + * **CANDIDATE_PROFILE_UPDATED_DUE_TO_MERGE** - candidate profile updated + due to merge. + + Additional context with id of duplicated candidate profile: + + ```json + + context: { + mergedProfileId: "string" + } + + ``` + + * **CANDIDATE_DELETED_DUE_TO_MERGE** - candidate profile deleted due to + merge. + + Additional context with id of master candidate profile: + + ```json + + context: { + masterProfileId: "string" + } + + ``` + + * **CANDIDATE_TAGS_MODIFIED** - candidate tags have been modified. It + means that tags have been added, replaced or deleted from the profile. + + The additional context contains the `tags` that are assigned to the candidate after the successful operation. + + ```json + + context: { + tags: "string" + } + + ``` + + * **APPLICATION_PROPERTIES_UPDATED** - application properties updated. + + Additional context with id of updated properties: + + ```json + + context: { + updatedPropertiesIds: "string", + updatedPropertiesKeys: "string" + } + + ``` + + * **APPLICATION_SOURCE_MODIFIED** - community or job application source + has been changed. + + The additional context contains the old and new source identifier after the successful operation. + + ```json + + context: { + previousSource: "string", + nextSource: "string" + } + + ``` + + * **ONBOARDING_STATUS_UPDATED** - onboarding status updated. + + Additional context with ids of values: + + ```json + + context: { + fromValueId: "string", + toValueId: "string" + } + + ``` + + * **JOB_APPLICATION_CREATED** - job application created. Currently, we + are auditing only actions undertaken by an employee. + + Additional context with ids of values: + + ```json + + context: { + currentStatus: "string" + } + + ``` + + * **JOB_APPLICATION_STATE_MODIFIED** - job application state modified. + Currently, we are auditing only actions undertaken by an employee or + system user. + + Additional context with ids of values: + + ```json + + context: { + currentStatus: "string", + currentStep: "string", //optional, might not be returned if lack of configured step + previousStatus: "string", + previousStep: "string" //optional, might not be returned if lack of configured step + } + + ``` + + * **LRSC_CONSENT_GIVEN** - Consent for data exchange within LinkedIn + Recruiter System Connect integration was given. + + * **OAUTH_APPLICATION_ACCESS_GRANTED** - Access to OAuth application was + granted to given user. + + Additional context represents grant's details: + + ```json + + context: { + applicationId: "string", + applicationName: "string", + startDate: "date-time", + endDate: "date-time" + } + + ``` + + JOB_PROPERTY_* events audit changes from both Web Application on Job + Field Settings page and Configuration API unless otherwise indicated. + + * **JOB_PROPERTY_CREATED** - a job property was created. + + * **JOB_PROPERTY_ACTIVATED** - a job property was activated. + + * **JOB_PROPERTY_DEACTIVATED** - a job property was deactivated. + + * **JOB_PROPERTY_UPDATED** - a job property was updated. + + Additional context represents current and previous job property: + + ```json + + property: { + id: "string", + label: "string", + category: "string", + active: boolean, + visible: boolean, + required: boolean + } + + context: { + currentProperty: property, + previousProperty: property + } + + ``` + + * **JOB_PROPERTY_UPDATED_VALUES** - values in job property were updated. + Only actions from UI are audited within this event. + + Additional context represents updated current and previous values: + + ```json + + value: { + id: "string", + label: "string", + archived: boolean + } + + context: { + currentValues: [value], + previousValues: [value] + } + + ``` + + * **JOB_PROPERTY_UPDATED_VALUE** - a job property value was updated + (changed label, (un)archived). Only actions from Configuration API are + audited. These actions from UI are audited within + JOB_PROPERTY_UPDATED_VALUES event. + + Additional context represents updated current and previous value: + + ```json + + context: { + currentValue: value, + previousValue: value + } + + ``` + + * **JOB_PROPERTY_ADDED_VALUE** - a value was added to a job property. + Only actions from Configuration API are audited. These actions from UI + are audited within JOB_PROPERTY_UPDATED_VALUES event. + + Additional context represents added value: + + ```json + context: { + value: [value] + } + ``` + + * **JOB_PROPERTY_ARCHIVED_VALUE** - a job property value was archived. + Only actions from Configuration API are audited. These actions from UI + are audited within JOB_PROPERTY_UPDATED_VALUES event. + + Additional context represents archived value id: + + ```json + + context: { + valueId: "string" + } + + ``` + + * **JOB_PROPERTY_DEPENDENT_PROPERTIES_UPDATED** - job property + dependents were updated. + + Additional context represents updated dependent properties: + + ```json + + context: { + currentDependents: ["string"], + previousDependents: ["string"] + } + + ``` + + * **JOB_PROPERTY_DEPENDENT_VALUES_UPDATED** - job property dependent + values were updated. + + Additional context represents added or updated dependent values: + + ```json + + dependentValue: { + "parent": { + "id": "string", + "label": "string" + }, + "values": [value], + "valuesIds": ["string"] + } + + + context: { + dependentId: "string", + currentDependentValues: [dependentValue], + previousDependentValues: [dependentValue] + } + + ``` + + * **JOB_PROPERTIES_CHANGED** - job details has changed (job fields + edited on job) + + ```json + + fieldValue: { + "fieldId": "string", + "value": "string" + } + + context: { + "previousProperties": [fieldValue], + "currentProperties": [fieldValue] + } + + ``` + + * **POSITION_UPDATED** - when position is updated + + * **POSITION_DELETED** - when position is deleted + + * **POSITION_CREATED** - when position is created + + * **POSITION_ASSIGNED** - when position is assigned + + * **CANCEL_NOT_FILLED_POSITION** - when not filled position is cancelled + + ```json + + position: { + id: 'string', + positionId: 'string', + status: 'string', + openDate: 'date', + targetStartDate: 'date', + type: 'string' + } + + context: { + previous: position, + current: position + } + + ``` + + * **JOB_AD_CREATED** - when job ad is created + + ```json + + location: { + country: 'string' + countryCode: 'string' + regionCode: 'string' + region: 'string' + city: 'string' + address: 'string' + postalCode: 'string' + longitude: 'string' + latitude: 'string' + manual: boolean + } + + jobAd: { + id: 'string', + title: 'string', + visibility: 'string', + creatorId: 'string', + modifierId: 'string', + createDate: 'string', + location: location, + sections: 'string', + languageId: 'string', + applyUrl: 'string' + } + + context: { + jobAd: jobAd + } + + ``` + + * **JOB_AD_UPDATED** - when job ad is updated + + ```json + + context: { + previous: jobAd, + current: jobAd + } + + ``` + + * **JOB_AD_DELETED** - when job ad is deleted + + ```json + + context: { + jobAdId: 'string', + employeeId: 'string' + } + + ``` + + * **ONBOARDING_PROCESS_DELETED** - when an Onboarding Process is deleted + from SmartOnboard + + ```json + + context: { + deletionReason: 'string' + } + + ``` + + * **CUSTOMER_REPORT_DOWNLOADED** - when a report is downloaded + Additional context with ids of values: + + ```json + + context: { + reportFileId: 'string', + reportId: 'string' + } ``` + tags: + - audit + summary: List audit events + operationId: audit.get + security: + - key: [] + - oauth: + - audit_events_read + parameters: + - in: query + description: >- + ISO8601-formatted time boundaries for the event time, Format: + yyyy-MM-ddTHH:mm:ss.SSSZZ (example: 2023-01-21T12:50:02.594Z) + name: eventDateAfter + schema: + type: string + format: date-time + - in: query + description: >- + ISO8601-formatted time boundaries for the event time, Format: + yyyy-MM-ddTHH:mm:ss.SSSZZ (example: 2023-01-21T12:50:02.594Z) + name: eventDateBefore + schema: + type: string + format: date-time + - in: query + description: Name of the event + name: eventName + explode: true + schema: + type: array + items: + type: string + enum: + - USER_ACCOUNT_ACTIVATED + - USER_ACCOUNT_CREATED + - USER_ACCOUNT_DEACTIVATED + - USER_ACCOUNT_UPDATED + - USER_AUTHENTICATION_INVALID_CREDENTIALS + - USER_AUTHENTICATION_SUCCESS + - USER_PASSWORD_CHANGED + - USER_PASSWORD_RESET + - USER_ROLE_CHANGED + - USER_API_KEY_RENEWED + - CREDENTIALS_CREATED + - CREDENTIALS_CHANGED + - CREDENTIALS_REVOKED + - SEARCH + - CANDIDATE_PERSONAL_DATA_MODIFIED + - CANDIDATE_PROFILE_MODIFIED + - CANDIDATE_DELETED + - CANDIDATE_PROFILE_OPENED + - CANDIDATE_PROFILE_UPDATED_DUE_TO_MERGE + - CANDIDATE_DELETED_DUE_TO_MERGE + - CANDIDATE_TAGS_MODIFIED + - APPLICATION_PROPERTIES_UPDATED + - APPLICATION_SOURCE_MODIFIED + - ONBOARDING_STATUS_UPDATED + - JOB_APPLICATION_CREATED + - JOB_APPLICATION_STATE_MODIFIED + - JOB_DELETED + - HIRING_TEAM_MEMBER_ADDED + - HIRING_TEAM_MEMBER_REMOVED + - HIRING_TEAM_ROLE_UPDATED + - APPROVAL_DELEGATION_FROM_USER_CREATED + - APPROVAL_DELEGATION_FROM_USER_CANCELLED + - APPROVAL_DELEGATION_TO_USER_CREATED + - APPROVAL_DELEGATION_TO_USER_CANCELLED + - JOB_APPROVAL_REQUESTED + - JOB_APPROVAL_APPROVED + - JOB_APPROVAL_REJECTED + - JOB_APPROVAL_ABANDONED + - JOB_APPROVAL_STEP_APPROVED + - JOB_APPROVAL_STEP_REJECTED + - JOB_APPROVAL_STEP_SKIPPED + - JOB_APPROVAL_STEP_DELEGATED + - OFFER_APPROVAL_APPROVED + - OFFER_APPROVAL_REJECTED + - OFFER_APPROVAL_ABANDONED + - OFFER_APPROVAL_STEP_APPROVED + - OFFER_APPROVAL_STEP_REJECTED + - OFFER_APPROVAL_STEP_SKIPPED + - OFFER_APPROVAL_STEP_DELEGATED + - OFFER_ACCEPTED + - OFFER_DECLINED + - CANDIDATE_EEO_FILLED + - LRSC_CONSENT_GIVEN + - OAUTH_APPLICATION_ACCESS_GRANTED + - JOB_PROPERTY_CREATED + - JOB_PROPERTY_UPDATED + - JOB_PROPERTY_ACTIVATED + - JOB_PROPERTY_DEACTIVATED + - JOB_PROPERTY_UPDATED_VALUES + - JOB_PROPERTY_UPDATED_VALUE + - JOB_PROPERTY_ADDED_VALUE + - JOB_PROPERTY_ARCHIVED_VALUE + - JOB_PROPERTY_DEPENDENT_PROPERTIES_UPDATED + - JOB_PROPERTY_DEPENDENT_VALUES_UPDATED + - JOB_PROPERTIES_CHANGED + - POSITION_UPDATED + - POSITION_DELETED + - POSITION_CREATED + - POSITION_ASSIGNED + - CANCEL_NOT_FILLED_POSITION + - JOB_AD_CREATED + - JOB_AD_UPDATED + - JOB_AD_DELETED + - ONBOARDING_PROCESS_DELETED + - CUSTOMER_REPORT_DOWNLOADED + default: + - USER_ACCOUNT_ACTIVATED + - USER_ACCOUNT_CREATED + - USER_ACCOUNT_DEACTIVATED + - USER_ACCOUNT_UPDATED + - USER_AUTHENTICATION_INVALID_CREDENTIALS + - USER_AUTHENTICATION_SUCCESS + - USER_PASSWORD_CHANGED + - USER_PASSWORD_RESET + - USER_ROLE_CHANGED + - USER_API_KEY_RENEWED + - CREDENTIALS_CREATED + - CREDENTIALS_CHANGED + - CREDENTIALS_REVOKED + - SEARCH + - JOB_DELETED + - HIRING_TEAM_MEMBER_ADDED + - HIRING_TEAM_MEMBER_REMOVED + - HIRING_TEAM_ROLE_UPDATED + - APPROVAL_DELEGATION_FROM_USER_CREATED + - APPROVAL_DELEGATION_FROM_USER_CANCELLED + - APPROVAL_DELEGATION_TO_USER_CREATED + - APPROVAL_DELEGATION_TO_USER_CANCELLED + - JOB_APPROVAL_REQUESTED + - JOB_APPROVAL_APPROVED + - JOB_APPROVAL_REJECTED + - JOB_APPROVAL_ABANDONED + - JOB_APPROVAL_STEP_APPROVED + - JOB_APPROVAL_STEP_REJECTED + - JOB_APPROVAL_STEP_SKIPPED + - JOB_APPROVAL_STEP_DELEGATED + - OFFER_APPROVAL_APPROVED + - OFFER_APPROVAL_REJECTED + - OFFER_APPROVAL_ABANDONED + - OFFER_APPROVAL_STEP_APPROVED + - OFFER_APPROVAL_STEP_REJECTED + - OFFER_APPROVAL_STEP_SKIPPED + - OFFER_APPROVAL_STEP_DELEGATED + - OFFER_ACCEPTED + - OFFER_DECLINED + - CANDIDATE_PERSONAL_DATA_MODIFIED + - CANDIDATE_PROFILE_MODIFIED + - CANDIDATE_DELETED + - CANDIDATE_PROFILE_OPENED + - CANDIDATE_EEO_FILLED + - CANDIDATE_PROFILE_UPDATED_DUE_TO_MERGE + - CANDIDATE_DELETED_DUE_TO_MERGE + - CANDIDATE_TAGS_MODIFIED + - APPLICATION_PROPERTIES_UPDATED + - APPLICATION_SOURCE_MODIFIED + - ONBOARDING_STATUS_UPDATED + - JOB_APPLICATION_CREATED + - JOB_APPLICATION_STATE_MODIFIED + - LRSC_CONSENT_GIVEN + - OAUTH_APPLICATION_ACCESS_GRANTED + - JOB_PROPERTY_CREATED + - JOB_PROPERTY_UPDATED + - JOB_PROPERTY_ACTIVATED + - JOB_PROPERTY_DEACTIVATED + - JOB_PROPERTY_UPDATED_VALUES + - JOB_PROPERTY_UPDATED_VALUE + - JOB_PROPERTY_ADDED_VALUE + - JOB_PROPERTY_ARCHIVED_VALUE + - JOB_PROPERTY_DEPENDENT_PROPERTIES_UPDATED + - JOB_PROPERTY_DEPENDENT_VALUES_UPDATED + - JOB_PROPERTIES_CHANGED + - POSITION_UPDATED + - POSITION_DELETED + - POSITION_CREATED + - POSITION_ASSIGNED + - CANCEL_NOT_FILLED_POSITION + - JOB_AD_CREATED + - JOB_AD_UPDATED + - JOB_AD_DELETED + - ONBOARDING_PROCESS_DELETED + - CUSTOMER_REPORT_DOWNLOADED + - in: query + description: Type of the author who generated the event + name: authorType + explode: true + schema: + type: array + items: + type: string + enum: + - USER + - SUPPORT_USER + - SYSTEM + - CANDIDATE + default: + - USER + - SUPPORT_USER + - SYSTEM + - CANDIDATE + - in: query + description: Unique identifier of the author + name: authorId + schema: + type: string + - in: query + description: Type of the entity that the event is related to + name: entityType + explode: true + schema: + type: array + items: + type: string + enum: + - USER + - CANDIDATE + - APPLICATION + - OFFER + - JOB + - COMPANY + - JOB_PROPERTY + - JOB_AD + - CREDENTIAL + - REPORT_FILE + - ONBOARDING_PROCESS + default: + - USER + - CANDIDATE + - APPLICATION + - OFFER + - JOB + - COMPANY + - JOB_PROPERTY + - JOB_AD + - CREDENTIAL + - REPORT_FILE + - ONBOARDING_PROCESS + - in: query + description: Unique identifier of the entity that the event is related to + name: entityId + schema: + type: string + - in: query + description: Unique identifier for the next page of events + name: nextPageId + schema: + type: string + - in: query + description: Number of audit events to return. Maximum value is 100. + name: limit + schema: + type: integer + minimum: 1 + maximum: 100 + default: 10 + /candidates/{id}/tags: + parameters: + - $ref: '#/components/parameters/candidateId' + post: + responses: + '201': + description: Added tags + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateTags' + '400': + description: Adding too many tags + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: No permission to access this candidate + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Add new tags to a given candidate. It doesn't replace existing tags. + tags: + - candidates + summary: Add tags to a candidate + operationId: candidates.tags.add + security: + - key: [] + - oauth: + - candidates_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateTags' + description: Tags to be added. + required: true + get: + responses: + '200': + description: Candidate's tags + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateTags' + '403': + description: No permission to access this candidate + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - candidates + summary: Get tags for a candidate + operationId: candidates.tags.get + security: + - key: [] + - oauth: + - candidates_read + put: + responses: + '201': + description: Updated tags + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateTags' + '403': + description: No permission to access this candidate + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Update tags for a given candidate. It replaces all existing tags with + the new array provided. + tags: + - candidates + summary: Update tags for a candidate + operationId: candidates.tags.replace + security: + - key: [] + - oauth: + - candidates_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateTags' + description: Tags to be set. + required: true + delete: + responses: + '204': + description: Candidate's tags successfully deleted + '403': + description: No permission to access this candidate + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Delete tags for a given candidate. All tags associated with a candidate + are removed. + tags: + - candidates + summary: Delete tags for a candidate + operationId: candidates.tags.delete + security: + - key: [] + - oauth: + - candidates_manage + /candidates/{id}/onboardingStatus: + parameters: + - $ref: '#/components/parameters/candidateId' + get: + deprecated: true + responses: + '200': + description: Onboarding status + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardingStatus' + '403': + description: > + with codes: + + * **NO_ACCESS_TO_CANDIDATE** when Onboarding Status is not accesible + with assigned permissions. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **CANDIDATE_NOT_FOUND** when candidate not found, + + * **ONBOARDING_STATUS_NOT_ACTIVE** when Onboarding Status candidate + property is not activated, + + * **CANDIDATE_FIELDS_FEATURE_MISSING** when Onboarding Status is not + accessible. Required feature: 'Candidate Fields'. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Get Onboarding Status for a candidate. Please use `GET + /candidates/{id}/jobs/{jobId}/onboardingStatus` instead. + tags: + - candidates + summary: Get Onboarding Status for a candidate + operationId: candidates.onboarding.get + security: + - key: [] + - oauth: + - candidates_read + put: + deprecated: true + responses: + '204': + description: Onboarding status successfully updated. + '403': + description: > + with codes: + + * **NO_ACCESS_TO_CANDIDATE** when Onboarding Status is not editable + with assigned permissions. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **CANDIDATE_NOT_FOUND** when candidate not found, + + * **ONBOARDING_STATUS_NOT_ACTIVE** when Onboarding Status custom + candidate property is not activated, + + * **CANDIDATE_FIELDS_FEATURE_MISSING** when Onboarding Status is not + accessible. Required feature: 'Candidate Fields'. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Set Onboarding Status for a candidate. Please use `PUT + /candidates/{id}/jobs/{jobId}/onboardingStatus` instead. + tags: + - candidates + summary: Set Onboarding Status for a candidate + operationId: candidates.onboarding.update + security: + - key: [] + - oauth: + - candidates_manage + requestBody: + $ref: '#/components/requestBodies/OnboardingStatus' + /candidates/{id}/jobs/{jobId}/onboardingStatus: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + get: + responses: + '200': + description: Onboarding status. + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardingStatus' + '403': + description: > + with codes: + + * **NO_ACCESS_TO_CANDIDATE** when Onboarding Status is not + accessible with assigned permissions. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **CANDIDATE_NOT_FOUND** when candidate not found, + + * **JOB_NOT_FOUND** when candidate is not assigned to given job, + + * **ONBOARDING_STATUS_NOT_ACTIVE** when Onboarding Status candidate + property is not activated, + + * **CANDIDATE_FIELDS_FEATURE_MISSING** when Onboarding Status is not + accessible. Required feature: 'Candidate Fields'. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get Onboarding Status for a candidate associated with given job. + tags: + - candidates + summary: Get Onboarding Status for a candidate associated with given job + operationId: candidates.onboarding.getForJob + security: + - key: [] + - oauth: + - candidates_read + put: + responses: + '204': + description: Onboarding status successfully updated. + '403': + description: > + with codes: + + * **NO_ACCESS_TO_CANDIDATE** when Onboarding Status is not editable + with assigned permissions. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **CANDIDATE_NOT_FOUND** when candidate not found, + + * **JOB_NOT_FOUND** when candidate is not assigned to given job, + + * **ONBOARDING_STATUS_NOT_ACTIVE** when Onboarding Status candidate + property is not activated, + + * **CANDIDATE_FIELDS_FEATURE_MISSING** when Onboarding Status is not + accessible. Required feature: 'Candidate Fields'. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Sets Onboarding Status for a candidate associated with given job. + tags: + - candidates + summary: Sets Onboarding Status for a candidate associated with given job + operationId: candidates.onboarding.updateForJob + security: + - key: [] + - oauth: + - candidates_manage + requestBody: + $ref: '#/components/requestBodies/OnboardingStatus' + /candidates: + get: + responses: + '200': + description: Candidates matching search criteria + content: + application/json: + schema: + $ref: '#/components/schemas/Candidates' + headers: + Link: + schema: + type: string + description: > + Links to related resources, in the format defined by + + [RFC 5988](https://tools.ietf.org/html/rfc5988#section-5). + + This will include a link with relation type `next` to the + + next page (containing `pageId` query parameter), if there is a + next page. + '400': + description: > + with codes + + * **FIELDS_CRITERIA_SIZE_VIOLATED** when number of elements of query + param `propertyId` is not + equal to number of elements of query param `propertyValueId` + * **SOURCES_CRITERIA_SIZE_VIOLATED** when number of elements of + query param `sourceType` is not + equal to number of elements of query param `sourceSubType` or not + equal to number of elements of query param `sourceValueId` + * **SCREENING_QUESTIONS_CRITERIA_SIZE_VIOLATED** when number of + elements of query param `questionCategory` is not + equal to number of elements of query param `questionFieldId` or not + equal to number of elements of query param `questionFieldValueId` + * **ONBOARDING_STATUS_NOT_ACTIVE** when Onboarding Status candidate + property is not activated or user's + company does not have candidate property feature, but user has requested to search candidates by + onboardingStatus query parameter + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Only candidates matching all specified criteria and having at least one + job application are returned. + tags: + - candidates + summary: Search candidates + operationId: candidates.all + security: + - key: [] + - oauth: + - candidates_read + parameters: + - in: query + description: >- + keyword search, for more infromation see [SmartRecruiters + HelpCenter](https://help.smartrecruiters.com/Getting_Started/Platform/Searching_candidates_via_Candidate_API) + name: q + schema: + type: string + - in: query + description: number of elements to return. max value is 100 + name: limit + schema: + type: integer + minimum: 1 + maximum: 100 + default: 10 + - in: query + description: > + page identifier of elements to return + + + The `pageId` param can be used to fetch multiple page response, in + case + + the number of results is higher than max number of elements to + return (specified in the `limit` parameter). + + The `pageId` should not be present when requesting the first page of + results. + + The pageId of the following page is returned either in the + `nextPageId` property, or is available + + in the HTTP header `Link` value of relation type `next`. + + Example of the `Link` header: + + ``` + + ; + rel="next" + + ``` + name: pageId + schema: + type: string + - in: query + description: >- + job filter to display candidates who applied for a job [id]; can be + used repeatedly; + name: jobId + explode: true + schema: + type: array + items: + type: string + - in: query + description: >- + location keyword search which looks up a string in a candidate’s + location data; can be used repeatedly; case insensitive; e.g. Krakow + name: location + explode: true + schema: + type: array + items: + type: string + - in: query + description: >- + average rating filter to display candidates with a specific average + rating (integer); can be used repeatedly; e.g. 4 + name: averageRating + deprecated: true + explode: true + schema: + type: array + items: + type: integer + maximum: 5 + minimum: 1 + - in: query + description: >- + candidate’s status filter in a context of a job; can be used + repeatedly + name: status + explode: true + schema: + type: array + items: + type: string + enum: + - LEAD + - NEW + - IN_REVIEW + - INTERVIEW + - OFFERED + - HIRED + - REJECTED + - WITHDRAWN + - TRANSFERRED + - in: query + description: candidate’s consent status filter; can be used repeatedly + name: consentStatus + explode: true + schema: + type: array + items: + $ref: '#/components/schemas/ConsentStatus' + - in: query + description: >- + candidate’s sub-status filter in a context of a job. Works only in a + correlation with a set value for the "status" field. + name: subStatus + schema: + type: string + - in: query + description: >- + tag assigned to a candidate; can be used repeatedly; case + insensitive; e.g. fluent english + name: tag + explode: true + schema: + type: array + items: + type: string + - in: query + description: >- + ISO8601-formatted time boundaries for the candidate update time, + Format: yyyy-MM-ddTHH:mm:ss.SSSZZ + name: updatedAfter + schema: + type: string + format: date-time + - in: query + description: candidate's onboarding status + name: onboardingStatus + schema: + type: string + enum: + - READY_TO_ONBOARD + - ONBOARDING_SUCCESSFUL + - ONBOARDING_FAILED + - in: query + description: >- + candidate's property id (1-N). Currently it is only possible to + filter by single-select application fields. Other application field + type filtering is not possible. + name: propertyId + explode: true + schema: + type: array + items: + type: string + default: [] + - in: query + description: candidate's property value id (1-N) + name: propertyValueId + explode: true + schema: + type: array + items: + type: string + default: [] + - in: query + description: candidate's source type (1-N) + name: sourceType + explode: true + schema: + type: array + items: + type: string + default: [] + - in: query + description: candidate's source subtype (1-N) + name: sourceSubType + explode: true + schema: + type: array + items: + type: string + default: [] + - in: query + description: candidate's source value id (1-N) + name: sourceValueId + explode: true + schema: + type: array + items: + type: string + default: [] + - in: query + description: screening question category (1-N) + name: questionCategory + explode: true + schema: + type: array + items: + type: string + default: [] + - in: query + description: screening question field id (1-N) + name: questionFieldId + explode: true + schema: + type: array + items: + type: string + default: [] + - in: query + description: screening question field value id (1-N) + name: questionFieldValueId + explode: true + schema: + type: array + items: + type: string + default: [] + post: + responses: + '201': + description: Created candidate. + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateDetails' + '400': + description: > + with codes + + * **SOURCE_NOT_FOUND** when provided source does not exist, + + * **SUBTYPE_REQUIRED** when there are more sources and subtype + parameter is required + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + with code **PERMISSION_DENIED** when you are not permitted to create + candidate + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with code **SOURCE_TYPE_NOT_FOUND** when provided source type does + not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Create a new candidate and assign to a Talent Pool. + + + **Tracking candidate source** + + + When adding a new candidate, it's very important you track its source + appropriately. In order to associate a source with your app/integration, + add below object to a candidate body object for this endpoint: + + ``` + + { + "sourceDetails": { + "sourceTypeId": "string", + "sourceSubTypeId": "string", + "sourceId": "string" + } + } + + ``` + + **sourceTypeId** - it's a Source Type - available values can be found + using [get + /configuration/sources](https://developers.smartrecruiters.com/reference/configurationsourcetypes-1) + endpoint + + + **sourceSubTypeId** - it's a Source Subtype, an optional parameter - + available values can be found using [get + /configuration/sources](https://developers.smartrecruiters.com/reference/configurationsourcetypes-1) + endpoint + + + **sourceId** - it's a Source Id - available values for a given + sourceTypeId can be found using [get + /configuration/sources/:sourceTypeId/values](https://developers.smartrecruiters.com/reference/configurationsourcevaluesall-1) + endpoint + + + NOTE: Not defining the source will default to **API** source. + + + NOTE II: In case you can't find an appropriate source to track against + you can: + + * Create a custom source for each customer account separately on [this + admin + page](https://www.smartrecruiters.com/settings/configuration/custom-sources) + (you need to be logged in as an admin to the customer account in order + to view this page) + + * Request to + [partners@smartrecruiters.com](mailto:partners@smartrecruiters.com) + adding a standard source that will be available for all customers if + your app/integration is productised (available to all SmartRecruiters + customers) + tags: + - candidates + summary: Create a new candidate and assign to a Talent Pool + operationId: candidates.add + security: + - key: [] + - oauth: + - candidates_create + requestBody: + $ref: '#/components/requestBodies/CandidateInput' + /candidates/cv: + post: + responses: + '201': + description: Created candidate. + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateDetails' + '400': + description: > + with codes + + * **SOURCE_NOT_FOUND** when provided source does not exist, + + * **SUBTYPE_REQUIRED** when there are more sources and subtype + parameter is required, + + * **UNPARSABLE_RESUME** when provided resume cannot be parsed, e.g. + an image + + * **INCOMPLETE_RESUME** when provided resume does not contain all + required information to create a candidate. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + with code **PERMISSION_DENIED** when you are not permitted to create + candidate + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + **SOURCE_TYPE_NOT_FOUND** when provided source type does not exist. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Parse a resume, create a candidate and assign to a Talent Pool. + tags: + - candidates + summary: Parse a resume, create a candidate and assign to a Talent Pool. + operationId: candidates.resume.add + security: + - key: [] + - oauth: + - candidates_create + requestBody: + $ref: '#/components/requestBodies/Resume' + /candidates/consent-requests: + post: + responses: + '201': + description: > + Consent requests has been scheduled. + + + The response contains a list of results for each individual consent + request in the same order as in the request. + + + A single result `status` property value could be: + + * 202 - consent request successfully scheduled, + + * 403 - cannot request consent from candidate as no privacy policy + has been configured. + content: + application/json: + schema: + $ref: '#/components/schemas/ConsentRequestsResults' + description: > + Read more about GDPR tools on [SmartRecruiters + HelpCenter](https://help.smartrecruiters.com/GDPR/GDPR_Tools_for_Companies) + tags: + - candidates + summary: Request consent from multiple candidates + operationId: candidates.consent.request.batch + security: + - key: [] + - oauth: + - candidates_manage + requestBody: + required: true + $ref: '#/components/requestBodies/BatchConsentRequest' + /candidates/{id}/consent: + parameters: + - $ref: '#/components/parameters/candidateId' + get: + responses: + '200': + description: Candidate's latest consent status + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateConsentStatus' + '403': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get candidate consent status + tags: + - candidates + summary: Status of candidate consent + operationId: candidates.consent.status + security: + - key: [] + - oauth: + - candidates_read + /candidates/{id}/consents: + parameters: + - $ref: '#/components/parameters/candidateId' + get: + responses: + '200': + description: Candidate's consent decisions + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateConsentDecisions' + '403': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Depending on the consent approach which a customer chooses, the response + will either contain one candidates' + + consent decision - known as "single consent" - or contain one + candidates' consent broken out by the data scopes + + which the customer has subscribed to - such as SmartRecruit and + SmartCRM. This is referred to as "separated consent". + + Provided there is at least one pending consent request (without a + decision) for a candidate, the response + + contains a date and time of the most recent of such consent requests. + + + Read more about GDPR tools on [SmartRecruiters + HelpCenter](https://help.smartrecruiters.com/GDPR/GDPR_Tools_for_Companies) + tags: + - candidates + summary: Candidate consent decisions + operationId: candidates.consent.decisions + security: + - key: [] + - oauth: + - candidates_read + /candidates/{id}: + parameters: + - $ref: '#/components/parameters/candidateId' + get: + responses: + '200': + description: Candidate details + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateDetails' + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get details of a candidate + tags: + - candidates + summary: Get details of a candidate + operationId: candidates.get + security: + - key: [] + - oauth: + - candidates_read + delete: + responses: + '204': + description: Candidate successfully deleted + '403': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Candidate not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Delete candidate + tags: + - candidates + summary: Delete Candidate + operationId: candidates.delete + security: + - key: [] + - oauth: + - candidates_manage + patch: + responses: + '200': + description: Candidate updated + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateDetails' + '403': + description: >- + with code **PERMISSION_DENIED** when you are not permitted to update + candidate details + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code: + * **CANDIDATE_NOT_FOUND** when candidate not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Update candidate details + tags: + - candidates + summary: Update candidate personal information + operationId: candidates.update + security: + - key: [] + - oauth: + - candidates_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PersonalDetails' + description: Candidate personal information + /candidates/{id}/attachments: + parameters: + - $ref: '#/components/parameters/candidateId' + get: + deprecated: true + responses: + '200': + description: Candidate's attachments + content: + application/json: + schema: + $ref: '#/components/schemas/Attachments' + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Attachment file access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get list of candidate's attachments. + tags: + - candidates + summary: Get list candidate's attachments. + operationId: candidates.attachments.list + security: + - key: [] + - oauth: + - candidates_read + post: + deprecated: true + responses: + '201': + description: Candidate's attachment + content: + application/json: + schema: + $ref: '#/components/schemas/Attachment' + '400': + description: > + with codes: + + * **FILE_ALREADY_EXIST** when file aleady exists, + + * **INVALID_FILE** when file extension not allowed, corrupted file + or wrong file type. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: >- + with code **ATTACHMENT_LIMIT_EXCEEDED** when no more files can be + added to candidate. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Attach files to a candidate. + tags: + - candidates + summary: Attach files to a candidate. + operationId: candidates.attachments.add + security: + - key: [] + - oauth: + - candidates_create + requestBody: + content: + multipart/form-data: + schema: + type: object + properties: + attachmentType: + description: Type of attachment you want to upload. + type: string + enum: + - GENERIC_FILE + - RESUME + - COVER_LETTER + default: GENERIC_FILE + file: + description: The file to upload. + type: string + format: binary + required: + - attachmentType + /candidates/{id}/attachments/{attachmentId}: + parameters: + - $ref: '#/components/parameters/candidateId' + get: + deprecated: true + responses: + '200': + description: Attachment content + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: with code FILE_NOT_FOUND when file does not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get a candidate's attachment. + tags: + - candidates + summary: Get a candidate's attachment. + operationId: candidates.attachments.get + security: + - key: [] + - oauth: + - candidates_read + parameters: + - in: path + description: Identifier of an attachment + name: attachmentId + required: true + schema: + type: string + /candidates/{id}/jobs/{jobId}/attachments: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + get: + responses: + '200': + description: Candidate's attachments in context of given job. + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateAttachmentsForJob' + '403': + description: >- + with code **PERMISSION_DENIED** when you are not permitted to view + candidate attachments in context of given job. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: >- + with code **JOB_NOT_FOUND** when candidate is not assigned to given + job. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get list of candidate's attachments in context of given job. + tags: + - candidates + summary: Get list of candidate's attachments in context of given job. + operationId: candidates.attachments.listForJob + security: + - key: [] + - oauth: + - candidates_read + post: + responses: + '201': + description: Candidate's attachment in context of given job. + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateAttachmentForJob' + '400': + description: > + with codes: + + * **FILE_ALREADY_EXIST** when file already exists, + + * **INVALID_FILE** when file extension not allowed, corrupted file + or wrong file type. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + with code **PERMISSION_DENIED** when you are not permitted to add + file to candidate in context of given job. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: >- + with code **JOB_NOT_FOUND** when candidate is not assigned to given + job. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: >- + with code **ATTACHMENT_LIMIT_EXCEEDED** when no more files can be + added to candidate in context of given job. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Attach file to candidate in context of given job. + tags: + - candidates + summary: Attach file to candidate in context of given job. + operationId: candidates.attachments.addForJob + security: + - key: [] + - oauth: + - candidates_create + requestBody: + content: + multipart/form-data: + schema: + type: object + properties: + attachmentType: + description: Type of attachment you want to upload. + type: string + enum: + - GENERIC_FILE + - RESUME + - COVER_LETTER + default: GENERIC_FILE + file: + description: File to upload. + type: string + format: binary + required: + - attachmentType + /candidates/attachments/{attachmentId}: + parameters: + - $ref: '#/components/parameters/attachmentId' + get: + responses: + '200': + description: Candidate's Attachment + '403': + description: > + with codes: + + * **PERMISSION_DENIED** when you are not permitted to download + attachment, + + * **MALWARE_DETECTED** when file has been marked as malicious. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: with code **FILE_NOT_FOUND** when attachment does not exist. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get candidate's attachment. + tags: + - candidates + summary: Get candidate's attachment. + operationId: candidates.attachments.getForJob + security: + - key: [] + - oauth: + - candidates_read + delete: + responses: + '204': + description: Attachment successfully deleted + '403': + description: >- + with code **PERMISSION_DENIED** when you are not permitted to delete + attachment. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: with code **FILE_NOT_FOUND** when attachment does not exist. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Delete attachment. + tags: + - candidates + summary: Delete attachment. + operationId: candidates.attachments.deleteForJob + security: + - key: [] + - oauth: + - candidates_manage + /candidates/{id}/jobs/{jobId}/status: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + put: + responses: + '204': + description: '' + '400': + description: > + with codes + + * **NO_REASON_SUPPORT_FOR_STATUS** when reason is not available for + given status (availably only for REJECTED and WITHDRAWN) + + * **REASON_NOT_FOUND** when given reason does not exist + + * **REQUIRED_SUB_STATUS_OMITTED** when there is a required sub + status before the status you want to move a candidate to + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with codes + + * **PERMISSION_DENIED** when you are not permitted to update + candidate's status + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Candidate is not assigned to given job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Update a candidate's status + tags: + - candidates + summary: Update a candidate's status + operationId: candidates.status.update + security: + - key: [] + - oauth: + - candidates_manage + requestBody: + $ref: '#/components/requestBodies/CandidateStatus' + /candidates/{id}/status: + parameters: + - $ref: '#/components/parameters/candidateId' + put: + deprecated: true + responses: + '204': + description: '' + '400': + description: > + with codes + + * **NO_REASON_SUPPORT_FOR_STATUS** when reason is not available for + given status (availably only for REJECTED and WITHDRAWN) + + * **REASON_NOT_FOUND** when given reason does not exist + + * **REQUIRED_SUB_STATUS_OMITTED** when there is a required sub + status before the status you want to move a candidate to + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with codes + + * **PERMISSION_DENIED** when you are not permitted to update + candidate's status + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Update a candidate's status on primary assignment. Please use `PUT + /candidates/{id}/jobs/{jobId}/status` instead. + tags: + - candidates + summary: Update a candidate's status on primary assignment + operationId: candidates.status.updatePrimary + security: + - key: [] + - oauth: + - candidates_manage + requestBody: + $ref: '#/components/requestBodies/CandidateStatus' + /candidates/{id}/status/history: + parameters: + - $ref: '#/components/parameters/candidateId' + get: + deprecated: true + responses: + '200': + description: Candidate's status history + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateStatusHistoryList' + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Get candidate's status history. Please use `GET + /candidates/{id}/jobs/{jobId}/status/history` instead. + tags: + - candidates + summary: Get candidate's status history + operationId: candidates.status.history.get + security: + - key: [] + - oauth: + - candidates_read + - candidate_status_read + /candidates/{id}/jobs/{jobId}/status/history: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + get: + responses: + '200': + description: Candidate's status history + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateStatusHistoryList' + '403': + description: > + with code **NO_ACCESS_TO_CANDIDATE** when not permitted to see this + candidate + + with code **NO_ACCESS_TO_JOB** when not permitted to see this + candidate in context of given job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with code **CANDIDATE_NOT_FOUND** when candidate not found + + with code **JOB_NOT_FOUND** when candidate is not assigned to given + job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get candidate's status history for a candidate's job + tags: + - candidates + summary: Get candidate's status history for a candidate's job + operationId: candidates.status.history.getForJob + security: + - key: [] + - oauth: + - candidates_read + - candidate_status_read + /candidates/{id}/jobs/{jobId}/source: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + put: + responses: + '204': + description: '' + '400': + description: > + with codes: + + * **INVALID_SOURCE_TYPE** when provided type does not exist, + + * **SUBTYPE_REQUIRED** when there are more sources and subtype + parameter is required, + + * **INVALID_SOURCE** when source id does not exist in provided type. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Candidate is not assigned to given job. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Update a candidate's source + tags: + - candidates + summary: Update a candidate's source + operationId: candidates.source.update + security: + - key: [] + - oauth: + - candidates_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateSource' + description: Candidate source to be set + required: true + /candidates/{id}/properties: + parameters: + - $ref: '#/components/parameters/candidateId' + get: + deprecated: true + responses: + '200': + description: Candidate property values. + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateProperties' + '403': + description: Candidate properties access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code **CANDIDATE_NOT_FOUND** when candidate does not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: | + Please use `GET /candidates/{id}/jobs/{jobId}/properties` instead. + Returns + ``` + {} + ``` + when there is no value set for a candidate property. + tags: + - candidates + summary: Get candidate property values for a candidate + operationId: candidates.properties.get + security: + - key: [] + - oauth: + - candidates_read + parameters: + - in: query + description: context for candidate properties to display + name: context + schema: + type: string + enum: + - PROFILE + - OFFER_FORM + - HIRE_FORM + - OFFER_APPROVAL_FORM + /candidates/{id}/jobs/{jobId}/properties: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + get: + responses: + '200': + description: Candidate property values. + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateProperties' + '403': + description: Candidate properties access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with code **JOB_NOT_FOUND** when candidate is not assigned to given + job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: | + Returns + ``` + {} + ``` + when there is no value set for a candidate property. + tags: + - candidates + summary: Get candidate property values for a candidate's job + operationId: candidates.properties.getForJob + security: + - key: [] + - oauth: + - candidates_read + parameters: + - in: query + description: context for candidate properties to display + name: context + schema: + type: string + enum: + - PROFILE + - OFFER_FORM + - HIRE_FORM + - OFFER_APPROVAL_FORM + put: + responses: + '204': + description: Properties successfully updated. + '400': + description: > + with codes + + * **COUNTRY_NOT_FOUND** when candidate property of COUNTRY type and + country with provided code does not exist, + + * **REGION_NOT_FOUND** when candidate property of REGION type and + region with provided code does not exist, + + * **USER_NOT_FOUND** when candidate property of USER type and user + with provided id does not exist, + + * **CURRENCY_NOT_FOUND** when candidate property of CURRENCY type + and currency with provided code does not exist, + + * **VALUE_NOT_FOUND** when candidate property of SINGLE_SELECT type + and value with provided id does not exist, + + * **INVALID_TEXT_FORMAT** when candidate property of TEXT type and + its value contains forbidden characters + + * **INVALID_EMAIL_FORMAT** when candidate property of TEXT type + (with enabled email validation) and its value contains invalid email + address + + * **INVALID_TEXT_PATTERN_FORMAT** when candidate property of TEXT + type (with enabled custom text pattern validation) and its value + contains value that does not match the pattern + + * **INACCESSIBLE_FIELD** when candidate property cannot be set due + to its own configuration + + * **DUPLICATE_PROPERTIES** when request contains multiple candidate + properties with the same id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Candidate properties access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes + + * **PROPERTY_NOT_FOUND** when one of the provided candidate + properties does not exist + + * **JOB_NOT_FOUND** when candidate is not assigned to given job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Set candidate properties values for the candidate's job + + + Below you can find a list of value examples, dependent on different + + candidate property types. + + + ### BOOLEAN + + + ``` + + [{ "id": "propertyId", "value": true }] + + ``` + + + Value has to be `true` or `false`. + + + ### COUNTRY + + + ``` + + [{ "id": "propertyId", "value": "us" }] + + ``` + + + Value has to be lowercase string in ISO 3166-1 alpha-2 format. + + + ### CURRENCY + + + ``` + + [{ "id": "propertyId", + "value": { + "code": "GBP", + "value": 23232 + } + }] + ``` + + + Code of value is a currency code in ISO 4217 format. + + + ### DATE + + + ``` + + [{ "id": "propertyId", "value": "2015-11-17T23:00:00.000Z" }] + + ``` + + + ### NUMBER, PERCENT + + + ``` + + [{ "id": "propertyId", "value": 42 }] + + ``` + + + ### REGION + + + ``` + + [{ "id": "propertyId", "value": "us-wa" }] + + ``` + + + Value has to be lowercase string in ISO 3166-2 compatible format. + + + ### SINGLE_SELECT + + + ``` + + [{ "id": "propertyId", "value": "f6fe768f-b5e6-4794-9938-c2f42ab0a572" + }] + + ``` + + + Value has to be an id of candidate property value (provided by `GET + + /configuration/candidate-properties/{propertyId}/values`). + + + ### TEXT + + + ``` + + [{ "id": "propertyId", "value": "Example text" }] + + ``` + + + ### USER + + + ``` + + [{ "id": "propertyId", "value": "50fe861de4b00265edec6775" }] + + ``` + + + Value has to be a valid user id + + + ### Resetting a value + + + To reset a value for any of the above types, please pass: + + + ``` + + [{"id": "propertyId"}] + + ``` + tags: + - candidates + summary: Add/update candidate properties values + operationId: candidates.properties.values.batchUpdateForJob + security: + - key: [] + - oauth: + - candidates_manage + requestBody: + $ref: '#/components/requestBodies/BatchCandidatePropertyValue' + /candidates/{id}/properties/{propertyId}: + parameters: + - $ref: '#/components/parameters/candidateId' + put: + deprecated: true + responses: + '204': + description: Property successfully updated. + '400': + description: > + with codes + + * **COUNTRY_NOT_FOUND** when candidate property of COUNTRY type and + country with provided code does not exist, + + * **REGION_NOT_FOUND** when candidate property of REGION type and + region with provided code does not exist, + + * **USER_NOT_FOUND** when candidate property of USER type and user + with provided id does not exist, + + * **CURRENCY_NOT_FOUND** when candidate property of CURRENCY type + and currency with provided code does not exist, + + * **INVALID_TEXT_FORMAT** when candidate property of TEXT type and + its value contains forbidden characters + + * **INVALID_EMAIL_FORMAT** when candidate property of TEXT type + (with enabled email validation) and its value contains invalid email + address + + * **INVALID_TEXT_PATTERN_FORMAT** when candidate property of TEXT + type (with enabled custom text pattern validation) and its value + contains value that does not match the pattern + + * **INACCESSIBLE_FIELD** when candidate property cannot be set due + to its own configuration + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Candidate properties access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with code **PROPERTY_NOT_FOUND** when candidate property does not + exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Please use `PUT /candidates/{id}/jobs/{jobId}/properties` instead. Set a + candidate property value for the candidate. + + Below you can find a list of value examples, dependent on different + candidate property types. + + * **BOOLEAN** + + ``` + + { "value": true } + + ``` + + Value has to be `true` or `false`. + + * **COUNTRY** + + ``` + + { "value": "us" } + + ``` + + Value has to be lowercase string in ISO 3166-1 alpha-2 format. + + * **CURRENCY** + + ``` + + { + "value": { + "code": "GBP", + "value": 23232 + } + } + + ``` + + Code of value is a currency code in ISO 4217 format. + + * **DATE** + + ``` + + { "value": "2015-11-17T23:00:00.000Z" } + + ``` + + * **NUMBER, PERCENT** + + ``` + + { "value": 42 } + + ``` + + * **REGION** + + ``` + + { "value": "us-wa" } + + ``` + + Value has to be lowercase string in ISO 3166-2 compatible format. + + * **SINGLE_SELECT** + + ``` + + { "value": "f6fe768f-b5e6-4794-9938-c2f42ab0a572" } + + ``` + + Value has to be an id of candidate property value (provided by GET + /configuration/candidate-properties/{propertyId}/values). + + * **TEXT** + + ``` + + { "value": "Example text" } + + ``` + + * **USER** + + ``` + + { "value": "50fe861de4b00265edec6775" } + + ``` + + Value has to be a valid user id + + + To reset a value for any of the above types, please pass + + ``` + + {} + + ``` + tags: + - candidates + summary: Add/update candidate property value + operationId: candidates.properties.values.update + security: + - key: [] + - oauth: + - candidates_manage + parameters: + - in: path + description: Identifier of a Candidate Property + name: propertyId + required: true + schema: + type: string + requestBody: + $ref: '#/components/requestBodies/CandidatePropertyInputValue' + /candidates/{id}/jobs/{jobId}/properties/{propertyId}: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + put: + deprecated: true + responses: + '204': + description: Property successfully updated. + '400': + description: > + with codes + + * **COUNTRY_NOT_FOUND** when candidate property of COUNTRY type and + country with provided code does not exist, + + * **REGION_NOT_FOUND** when candidate property of REGION type and + region with provided code does not exist, + + * **USER_NOT_FOUND** when candidate property of USER type and user + with provided id does not exist, + + * **CURRENCY_NOT_FOUND** when candidate property of CURRENCY type + and currency with provided code does not exist, + + * **VALUE_NOT_FOUND** when candidate property of SINGLE_SELECT type + and value with provided id does not exist, + + * **INVALID_TEXT_FORMAT** when candidate property of TEXT type and + its value contains forbidden characters + + * **INVALID_EMAIL_FORMAT** when candidate property of TEXT type + (with enabled email validation) and its value contains invalid email + address + + * **INVALID_TEXT_PATTERN_FORMAT** when candidate property of TEXT + type (with enabled custom text pattern validation) and its value + contains value that does not match the pattern + + * **INACCESSIBLE_FIELD** when candidate property cannot be set due + to its own configuration + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Candidate properties access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes + * **PROPERTY_NOT_FOUND** when candidate property does not exist + * **JOB_NOT_FOUND** when candidate is not assigned to given job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: | + Please use `PUT /candidates/{id}/jobs/{jobId}/properties` instead. + + Set a candidate property value for the candidate. + + Below you can find a list of value examples, dependent on different + candidate property types. + + ### BOOLEAN + + ``` + { "value": true } + ``` + + Value has to be `true` or `false`. + + ### COUNTRY + + ``` + { "value": "us" } + ``` + + Value has to be lowercase string in ISO 3166-1 alpha-2 format. + + ### CURRENCY + + ``` + { + "value": { + "code": "GBP", + "value": 23232 + } + } + ``` + + Code of value is a currency code in ISO 4217 format. + + ### DATE + + ``` + { "value": "2015-11-17T23:00:00.000Z" } + ``` + + ### NUMBER, PERCENT + + ``` + { "value": 42 } + ``` + + ### REGION + + ``` + { "value": "us-wa" } + ``` + + Value has to be lowercase string in ISO 3166-2 compatible format. + + ### SINGLE_SELECT + + ``` + { "value": "f6fe768f-b5e6-4794-9938-c2f42ab0a572" } + ``` + + Value has to be an id of candidate property value (provided by `GET + /configuration/candidate-properties/{propertyId}/values`). + + ### TEXT + + ``` + { "value": "Example text" } + ``` + + ### USER + + ``` + { "value": "50fe861de4b00265edec6775" } + ``` + + Value has to be a valid user id + + ### Resetting a value + + To reset a value for any of the above types, please pass: + + ``` + {} + ``` + tags: + - candidates + summary: Add/update candidate property value + operationId: candidates.properties.values.updateForJob + security: + - key: [] + - oauth: + - candidates_manage + parameters: + - in: path + description: Identifier of a Candidate Property + name: propertyId + required: true + schema: + type: string + requestBody: + $ref: '#/components/requestBodies/CandidatePropertyInputValue' + /candidates/{id}/jobs/{jobId}/screening-answers: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + get: + responses: + '200': + description: Candidate screening question answers for a candidate's job + content: + application/json: + schema: + $ref: '#/components/schemas/ScreeningAnswers' + example: + totalFound: 10 + content: + - id: 0e91d24a-d85b-487d-99ef-eeaca7277d77 + type: radio + category: drivingCurrent + name: Driving Current + label: Do you have a current driver's license? + records: + - fields: + - id: value + label: Value + values: + - id: '0' + label: 'No' + - id: a00c06fb-6693-4138-a005-57c92ab796b6 + type: textarea + category: 04f8fac1-8799-47ef-af54-7dcc4cd10bb9 + name: Free text question + label: Free text question + records: + - fields: + - id: value + label: Value + values: + - id: Long text answer for free text questions + label: Long text answer for free text questions + - id: a98ba616-d7ed-43e5-b5b5-23a9eca031e3 + type: checkbox + category: ba9acad1-71b3-42a1-a059-c05e1bbbc301 + name: Checkbox question + label: Checkbox question + records: + - fields: + - id: confirm + label: Checkbox question + values: + - id: '1' + label: Confirmed + - id: eb93fc47-6f72-4d97-a60e-a265f8621e84 + type: checkbox + category: 20ef7ecb-09c4-4afd-80fc-6a2700a1c3ba + name: Legacy acknowledgment question + label: Legacy acknowledgment question - replaced by checkbox + records: + - fields: + - id: confirm + label: >- + Legacy acknowledgment question - replaced by + checkbox + values: + - id: '1' + label: Confirmed + - id: 40bc2e3b-fd1c-47e8-b514-2365fc705447 + type: eeo + category: eeoInformation + name: EEO - Race and Gender + label: >- + Gender, Race and Ethnicity + [(definitions)](https://smartrecruiters.com/oneclick/static/html/en/eeoGeneral.html) + records: + - fields: + - id: gender + label: Gender + values: + - id: '0' + label: Male + - id: ethnicity + label: Race/Ethnicity + values: + - id: '6' + label: Prefer not to answer + - id: f9ffb0eb-c8e7-4c18-bfa3-7fb22af7da03 + type: currency + category: b2e9b169-77a6-4425-b82a-8dd80c84005b + name: Currency question + label: Currency question + records: + - fields: + - id: amount + label: Value + values: + - id: '1234' + label: '1234' + - id: 910ceed4-a708-4c22-8c10-f53e1b053a7d + type: select + category: 445c45ae-8e5a-48c6-9e05-0846d35bfa6d + name: Multiple choice dropdown + label: Multiple choice dropdown + records: + - fields: + - id: value + label: Value + values: + - id: d6c2c580-5f51-4960-a6e5-a8bc8849f35c + label: third value + - id: 5e9cc528-9640-454d-8ef6-19bd06ce2ea9 + label: second value + - id: 10a341a3-b8ff-4121-9dee-75b442e64f00 + label: first value + - id: 1549f34c-fdda-459a-8c01-be8ab6cef19f + type: languages + category: languages + name: Languages + label: Languages + records: + - fields: + - id: lang + label: Language + values: + - id: English + label: English + - id: level + label: Proficiency level + values: + - id: '2' + label: Advanced + - fields: + - id: lang + label: Language + values: + - id: Spanish + label: Spanish + - id: level + label: Proficiency level + values: + - id: '0' + label: Beginner + - fields: + - id: lang + label: Language + values: + - id: French + label: French + - id: level + label: Proficiency level + values: + - id: '1' + label: Intermediate + - id: 2bb9faa5-dbe9-42dc-9c00-381dddb0abb6 + type: work_shifts + category: preferredWorkShifts + name: Work Shifts + label: What are your preferred work shifts? + records: + - fields: + - id: day + label: Day + values: + - id: '2' + label: Weekdays + - id: from + label: From + values: + - id: '8' + label: 08:00 AM + - id: to + label: To + values: + - id: '16' + label: 04:00 PM + - fields: + - id: day + label: Day + values: + - id: '2' + label: Weekdays + - id: from + label: From + values: + - id: '10' + label: 10:00 AM + - id: to + label: To + values: + - id: '14' + label: 02:00 PM + - id: 6c0ed428-f167-4ab0-967d-564560617e7b + type: text + category: yourName + name: Your Name + label: Your Name + records: + - fields: + - id: value + values: + - id: John + label: John + '403': + description: Screening Question Answers access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Screening Question Answers not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Returns candidate screening question answers for a candidate's job. + Returns an empty array when there is no screening answers for given + candidate's job. + + + UUID in question category indicates custom question. Other value + indicates predefined library question. + + + In order to create human readable format of answers please use label + properties. Ignore labels for answers with single field. + + Based on labels from included example you can get following text: + + + ```text + + Do you have a current driver's license? + - No + + Free text question + - Long text answer for free text questions + + Checkbox question + - Confirmed + + Legacy acknowledgment question - replaced by checkbox + - Confirmed + + Gender, Race and Ethnicity + [(definitions)](https://smartrecruiters.com/oneclick/static/html/en/eeoGeneral.html) + - Gender: Male + - Race/Ethnicity: Prefer not to answer + + Currency question + - 1234 + + Multiple choice dropdown + - third value, second value, first value + + Languages + 1) + - Language: English + - Proficiency level: Advanced + 2) + - Language: Spanish + - Proficiency level: Beginner + 3) + - Language: French + - Proficiency level: Intermediate + + What are your preferred work shifts? + + 1) + - Day: Weekdays + - From: 08:00 AM + - To: 04:00 PM + 2) + - Day: Weekdays + - From: 10:00 AM + - To: 02:00 PM + + Your Name + - John + ``` + tags: + - candidates + summary: Get candidate screening answers for a candidate's job + operationId: candidates.screening-answers.get + security: + - key: [] + - oauth: + - candidates_read + /jobs/{jobId}/candidates: + parameters: + - $ref: '#/components/parameters/jobId' + post: + responses: + '201': + description: Created candidate. + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateDetails' + '400': + description: > + with codes + + * **SOURCE_NOT_FOUND** when provided source does not exist, + + * **SUBTYPE_REQUIRED** when there are more sources and subtype + parameter is required + + * **INVALID_SOURCE_ID** when invalid source ID provided for a + specified sourceIdType. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: | + with code **PERMISSION_DENIED** when job access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + with code **PERMISSION_DENIED** when you are not permitted to create + candidate + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with code **SOURCE_TYPE_NOT_FOUND** when provided source type does + not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Create a new candidate and assign to a job. + + + **Tracking candidate source** + + + When adding a new candidate, it's very important you track its source + appropriately. In order to associate a source with your app / + integration, add the below object to a candidate body object for this + endpoint: + + ``` + + { + "sourceDetails": { + "sourceTypeId": "string", + "sourceSubTypeId": "string", + "sourceId": "string" + } + } + + ``` + + **sourceTypeId** - it's a Source Type - available values can be found + using [get + /configuration/sources](https://developers.smartrecruiters.com/reference/configurationsourcetypes-1) + endpoint + + + **sourceSubTypeId** - it's a Source Subtype, an optional parameter - + available values can be found using [get + /configuration/sources](https://developers.smartrecruiters.com/reference/configurationsourcetypes-1) + endpoint + + + **sourceId** - it's a Source Id - available values for a given + sourceTypeId can be found using [get + /configuration/sources/:sourceTypeId/values](https://developers.smartrecruiters.com/reference/configurationsourcevaluesall-1) + endpoint + + + NOTE: Not defining the source will default to **API** source. + + + NOTE II: In case you can't find an appropriate source to track against + you can: + + * Create a custom source for each customer account separately on [this + admin + page](https://www.smartrecruiters.com/settings/configuration/custom-sources\) + (you need to be logged in as an admin to the customer account in order + to view this page) + + * Request to + [partners@smartrecruiters.com](mailto:partners@smartrecruiters.com) + adding a standard source that will be available for all customers if + your app / integration is productised (available to all SmartRecruiters + customers) + tags: + - candidates + summary: Create a new candidate and assign to a job + operationId: candidates.addToJob + security: + - key: [] + - oauth: + - candidates_create + requestBody: + $ref: '#/components/requestBodies/CandidateInput' + /jobs/{jobId}/candidates/cv: + parameters: + - $ref: '#/components/parameters/jobId' + post: + responses: + '201': + description: Created candidate. + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateDetails' + '400': + description: > + with codes + + * **SOURCE_NOT_FOUND** when provided source does not exist, + + * **SUBTYPE_REQUIRED** when there are more sources and subtype + parameter is required + + * **UNPARSABLE_RESUME** when provided resume cannot be parsed, e.g. + an image + + * **INCOMPLETE_RESUME** when provided resume does not contain all + required information to create a candidate. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Job access denied. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + with code **PERMISSION_DENIED** when you are not permitted to create + candidate + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + **SOURCE_TYPE_NOT_FOUND** when provided source type does not exist. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Parse a resume, create a candidate and assign to a job. + tags: + - candidates + summary: Parse a resume, create a candidate and assign to a job. + operationId: candidates.resume.addToJob + security: + - key: [] + - oauth: + - candidates_create + requestBody: + $ref: '#/components/requestBodies/Resume' + /candidates/{id}/jobs/{jobId}: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + get: + responses: + '200': + description: Candidate's application + content: + application/json: + schema: + $ref: '#/components/schemas/Application' + '403': + description: Permission denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Application not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get details of a candidate's application to a job + tags: + - candidates + summary: Get details of a candidate's application to a job + operationId: candidates.getApplication + security: + - key: [] + - oauth: + - candidates_read + /configuration/company: + get: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CompanyConfiguration' + description: Get all information about your company. + tags: + - configuration + summary: Get company information + operationId: configuration.company.my + security: + - key: [] + - oauth: + - company_read + - configuration_read + /configuration/job-properties: + get: + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JobPropertyDefinitionList' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get a list of available job properties. + tags: + - configuration + summary: Get a list of available job properties + operationId: configuration.job-properties.all + security: + - key: [] + - oauth: + - configuration_read + post: + responses: + '201': + description: Created job property + content: + application/json: + schema: + $ref: '#/components/schemas/JobPropertyDefinition' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + With codes: + + * *JOB_PROPERTY_LIMIT_EXCEEDED* when job properties limit is + reached, + + * *DEFINITION_NAME_IS_NOT_ALLOWED* when job property name is + restricted. + description: Creates a job property + tags: + - configuration + summary: Create a job property + operationId: configuration.job-properties.create + security: + - key: [] + - oauth: + - configuration_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/JobPropertyDefinitionCreationRequest' + description: job property to be created + /configuration/job-properties/{id}: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + get: + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JobPropertyDefinition' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Job property not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get job property by id + tags: + - configuration + summary: Get job property by id + operationId: configuration.job-properties.get + security: + - key: [] + - oauth: + - configuration_read + patch: + responses: + '200': + description: Updated job property + content: + application/json: + schema: + $ref: '#/components/schemas/JobPropertyDefinition' + '400': + description: Job property is not editable + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Job property not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + With code: + + * *DEFINITION_NAME_IS_NOT_ALLOWED* when job property name is + restricted. + description: Updates a job property. + tags: + - configuration + summary: Update a job property + operationId: configuration.job-properties.update + security: + - key: [] + - oauth: + - configuration_manage + requestBody: + $ref: '#/components/requestBodies/JSONPatch' + /configuration/job-properties/{id}/translations: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + patch: + security: + - key: [] + - oauth: + - configuration_manage + responses: + '204': + description: Translations accepted + '400': + description: | + with codes + * *PROPERTY_INVALID* - when value contains invalid characters + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes + * *JOB_PROPERTY_NOT_FOUND* - when job property not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: >- + There is more than one translation with the same language in the + input + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: 'Invalid input: missing required data, invalid format' + description: Submit a job property's translations to different languages + tags: + - configuration + summary: Add a job property's translations + operationId: configuration.job-properties.translations.patch + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/LabelTranslations' + required: true + /configuration/job-properties/{id}/values: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + get: + parameters: + - $ref: '#/components/parameters/language' + - $ref: '#/components/parameters/pageId' + - $ref: '#/components/parameters/pageSize' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JobPropertyValueDefinitionList' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Job property not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get available job property values. + tags: + - configuration + summary: Get available job property values + operationId: configuration.job-properties.values.get + security: + - key: [] + - oauth: + - configuration_read + post: + responses: + '201': + description: Created job property value + content: + application/json: + schema: + $ref: '#/components/schemas/JobPropertyValueDefinition' + '400': + description: > + when value is invalid with codes: + + * *VALUES_NOT_ALLOWED* when values are not allowed (e.g. for free + text fields) + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: When job property not found. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: When job property value with given label already exists. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + when value id is invalid or with codes: + + * *ACTIVE_VALUES_LIMIT_REACHED* when limit of active job property + values is reached + + * *VALUES_LIMIT_REACHED* when the limit of job property values + (active and inactive) is reached + + * *VALUE_LABEL_IS_BLANK* when provided label is blank + + * *VALUE_LABEL_IS_INVALID* when provided label is not valid, e.g. + contains leading/trailing whitespaces + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Creates a job property value. + tags: + - configuration + summary: Create a job property value + operationId: configuration.job-properties.values.create + security: + - key: [] + - oauth: + - configuration_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/JobPropertyValueDefinition' + description: job property object to be created + /configuration/job-properties/{id}/values/{valueId}: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + - $ref: '#/components/parameters/jobPropertyValueId' + delete: + deprecated: true + responses: + '204': + description: '' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * *JOB_PROPERTY_NOT_FOUND* when job property does not exist + + * *JOB_PROPERTY_VALUE_NOT_FOUND* when job property value does not + exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Archive a job property value. Please use `PUT + /configuration/job-properties/{id}/archive-values/{valueId}` instead. + tags: + - configuration + summary: Archive a job property value + operationId: configuration.job-properties.values.deprecatedArchive + security: + - key: [] + - oauth: + - configuration_manage + put: + deprecated: true + responses: + '204': + description: '' + '404': + description: > + with codes: + + * *JOB_PROPERTY_NOT_FOUND* when job property does not exist + + * *JOB_PROPERTY_VALUE_NOT_FOUND* when job property value does not + exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + with codes: + + * *VALUE_LABEL_IS_INVALID* when value label contains invalid + characters. In order to unarchive the value, first update the label + with only valid characters. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Unarchive a job property value. `DELETE + /configuration/job-properties/{id}/archive-values/{valueId}` instead. + tags: + - configuration + summary: Unarchive a job property value + operationId: configuration.job-properties.values.deprecatedUnarchive + security: + - key: [] + - oauth: + - configuration_manage + patch: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JobPropertyValueDefinition' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * *JOB_PROPERTY_NOT_FOUND* when job property does not exist + + * *JOB_PROPERTY_VALUE_NOT_FOUND* when job property value does not + exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: When label being updated conflicts with already existing one. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + with input validation fails or with codes: + + * *ACTIVE_VALUES_LIMIT_REACHED* when limit of active job property + values is reached. + + * *JSON_PATCH_INVALID* when patch json is invalid. + + * *VALUE_LABEL_IS_BLANK* when provided label is blank + + * *VALUE_LABEL_IS_INVALID* when provided label is not valid, e.g. + contains leading/trailing whitespaces + description: >- + Update a job property value. Returns an updated job property value + object. + tags: + - configuration + summary: Update a job property value + operationId: configuration.job-properties.values.update + security: + - key: [] + - oauth: + - configuration_manage + requestBody: + $ref: '#/components/requestBodies/JSONPatch' + /configuration/job-properties/{id}/values/{valueId}/translations: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + - $ref: '#/components/parameters/jobPropertyValueId' + patch: + security: + - key: [] + - oauth: + - configuration_manage + responses: + '204': + description: Translations accepted + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes + * *JOB_PROPERTY_NOT_FOUND* - when job property not found + * *JOB_PROPERTY_VALUE_NOT_FOUND* when job property's value with given id does not exist. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: >- + There is more than one translation with the same language in the + input + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: 'Invalid input: missing required data, invalid format' + description: Submit a job property value's translations to different languages + tags: + - configuration + summary: Add a job property value's translations + operationId: configuration.job-properties.values.translations.patch + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/LabelTranslations' + required: true + /configuration/job-properties/{id}/archive-values/{valueId}: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + - $ref: '#/components/parameters/jobPropertyValueId' + put: + responses: + '204': + description: '' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * *JOB_PROPERTY_NOT_FOUND* when job property does not exist + + * *JOB_PROPERTY_VALUE_NOT_FOUND* when job property value does not + exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Archive a job property value + tags: + - configuration + summary: Archive a job property value + operationId: configuration.job-properties.values.archive + security: + - key: [] + - oauth: + - configuration_manage + delete: + responses: + '204': + description: '' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * *JOB_PROPERTY_NOT_FOUND* when job property does not exist + + * *JOB_PROPERTY_VALUE_NOT_FOUND* when job property value does not + exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + with codes: + + * *VALUE_LABEL_IS_INVALID* when value label contains invalid + characters. In order to unarchive the value, first update the label + with only valid characters. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unarchive a job property value + tags: + - configuration + summary: Unarchive a job property value + operationId: configuration.job-properties.values.unarchive + security: + - key: [] + - oauth: + - configuration_manage + /configuration/job-properties/{id}/activation: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + put: + responses: + '204': + description: '' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Job property not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: When trying to activate job property that has no active values + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Activates a job property with given id. + tags: + - configuration + summary: Activate a job property + operationId: configuration.job-properties.activate + security: + - key: [] + - oauth: + - configuration_manage + delete: + responses: + '204': + description: '' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Job property not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Deactivates a job property. + tags: + - configuration + summary: Deactivate a job property + operationId: configuration.job-properties.deactivate + security: + - key: [] + - oauth: + - configuration_manage + /configuration/job-properties/{id}/dependents: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + get: + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DependentJobProperties' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + * **JOB_PROPERTY_NOT_FOUND** when job property not found, + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get list of job property's dependents + tags: + - configuration + summary: Get job property's dependents + operationId: configuration.job-properties.dependents.all + security: + - key: [] + - oauth: + - configuration_read + post: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DependentJobProperties' + '400': + description: > + with codes + + * **JOB_PROPERTIES_CIRCULAR_DEPENDENCY** for job properties circular + dependency + + * **JOB_PROPERTY_ALREADY_DEPENDENT** when job property is already + other job property's dependent + + * **DEPENDENT_JOB_PROPERTY_NOT_FOUND** when dependent job property + not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + * **JOB_PROPERTY_NOT_FOUND** when job property not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: when input validation fails + description: Create dependencies between job properties + tags: + - configuration + summary: Create job property dependents + operationId: configuration.job-properties.dependents.create + security: + - key: [] + - oauth: + - configuration_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DependentJobPropertiesIds' + description: Job properties' id + required: true + /configuration/job-properties/{id}/dependents/{dependentId}: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + - $ref: '#/components/parameters/jobPropertyDependentId' + delete: + responses: + '204': + description: '' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with code + + * **JOB_PROPERTY_NOT_FOUND** when job property not found + + * **JOB_PROPERTY_DEPENDENT_NOT_FOUND** when job property dependent + not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Remove dependency between job properties + tags: + - configuration + summary: Remove job property's dependent + operationId: configuration.job-properties.dependents.remove + security: + - key: [] + - oauth: + - configuration_manage + /configuration/job-properties/{id}/dependents/{dependentId}/values: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + - $ref: '#/components/parameters/jobPropertyDependentId' + get: + deprecated: true + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DependentJobPropertyValuesRelations' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **JOB_PROPERTY_NOT_FOUND** when job property not found, + + * **JOB_PROPERTY_DEPENDENT_NOT_FOUND** when job property dependent + not found + + * **DEPENDENCY_NOT_FOUND** when dependency between properties not + found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Get dependent job property's values with corelation to the parent field. + Please use GET + configuration/job-properties/{id}/values/{valueId}/dependents/{dependentId}/values + (with paging) instead. + tags: + - configuration + summary: Get dependent job property's values + operationId: configuration.job-properties.dependents.values.all + security: + - key: [] + - oauth: + - configuration_read + /configuration/job-properties/{id}/values/{valueId}/dependents/{dependentId}/values: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + - $ref: '#/components/parameters/jobPropertyValueId' + - $ref: '#/components/parameters/jobPropertyDependentId' + get: + parameters: + - $ref: '#/components/parameters/language' + - $ref: '#/components/parameters/pageId' + - $ref: '#/components/parameters/pageSize' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DependentJobPropertyValues' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **JOB_PROPERTY_NOT_FOUND** when job property not found, + + * **JOB_PROPERTY_VALUE_NOT_FOUND* when job property value not found + + * **JOB_PROPERTY_DEPENDENT_NOT_FOUND** when job property dependent + not found + + * **DEPENDENCY_NOT_FOUND** when dependency between properties not + found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Get list of job property's dependent values for specific job property's + value + tags: + - configuration + summary: Get job property's dependent values + operationId: configuration.job-properties.dependents.values.get + security: + - key: [] + - oauth: + - configuration_read + post: + responses: + '204': + description: '' + '400': + description: > + with code: + + * **JOB_PROPERTY_DEPENDENT_VALUE_NOT_FOUND** when job property + dependent value id not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **JOB_PROPERTY_NOT_FOUND** when job property not found, + + * **JOB_PROPERTY_VALUE_NOT_FOUND* when job property value not found + + * **JOB_PROPERTY_DEPENDENT_NOT_FOUND** when job property dependent + not found + + * **DEPENDENCY_NOT_FOUND** when dependency between properties not + found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: > + with code: + + * **JOB_PROPERTY_DEPENDENT_VALUE_EXISTS** when job property's + dependent value exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: when input validation fails + description: Add job property's dependent value for specific job property's value + tags: + - configuration + summary: Add job property's dependent value + operationId: configuration.job-properties.dependents.values.add + security: + - key: [] + - oauth: + - configuration_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Identifiable' + description: Identifier of job property's dependent value + required: true + /configuration/job-properties/{id}/values/{valueId}/dependents/{dependentId}/values/{dependentValueId}: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + - $ref: '#/components/parameters/jobPropertyValueId' + - $ref: '#/components/parameters/jobPropertyDependentId' + - $ref: '#/components/parameters/jobPropertyDependentValueId' + delete: + responses: + '204': + description: '' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **JOB_PROPERTY_NOT_FOUND** when job property not found, + + * **JOB_PROPERTY_VALUE_NOT_FOUND* when job property value not found + + * **JOB_PROPERTY_DEPENDENT_NOT_FOUND** when job property's dependent + not found + + * **JOB_PROPERTY_DEPENDENT_VALUE_NOT_FOUND** when job property's + dependent value not found + + * **DEPENDENCY_NOT_FOUND** when dependency between properties not + found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Remove relationship between dependent job properties values + tags: + - configuration + summary: Remove job property's dependent values relationship + operationId: configuration.job-properties.dependents.values.remove + security: + - key: [] + - oauth: + - configuration_manage + /configuration/departments: + post: + responses: + '201': + description: Created department + content: + application/json: + schema: + $ref: '#/components/schemas/Department' + '400': + description: >- + With code **DEPARTMENT_LABEL_NOT_UNIQUE** when department with given + label already exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - configuration + summary: Creates department + operationId: configuration.department.create + security: + - key: [] + - oauth: + - configuration_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Department' + description: department to be created + required: true + get: + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: Department list + content: + application/json: + schema: + $ref: '#/components/schemas/Departments' + tags: + - configuration + summary: Get departments + operationId: configuration.department.all + security: + - key: [] + - oauth: + - configuration_read + /configuration/departments/{id}: + get: + responses: + '200': + description: Department + content: + application/json: + schema: + $ref: '#/components/schemas/Department' + '404': + description: Department not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - configuration + summary: Get department + operationId: configuration.department.get + security: + - key: [] + - oauth: + - configuration_read + parameters: + - in: path + description: Identifier of a department + name: id + required: true + schema: + type: string + /configuration/hiring-processes: + get: + responses: + '200': + description: Hiring processes list + content: + application/json: + schema: + $ref: '#/components/schemas/HiringProcesses' + tags: + - configuration + summary: Get list of hiring process + operationId: configuration.hiring-process.all + security: + - key: [] + - oauth: + - configuration_read + /configuration/hiring-processes/{id}: + get: + responses: + '200': + description: Hiring process + content: + application/json: + schema: + $ref: '#/components/schemas/HiringProcess' + '404': + description: Hiring process not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - configuration + summary: Get hiring process + operationId: configuration.hiring-process.get + security: + - key: [] + - oauth: + - configuration_read + parameters: + - in: path + description: Identifier of a hiring process + name: id + required: true + schema: + type: string + /configuration/offer-properties: + get: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/OfferPropertiesDefinition' + '403': + description: | + with code **NO_ACCESS_TO_OFFERS** when not permitted to see offers + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get a list of available offer properties. + tags: + - configuration + summary: Get a list of available offer properties + operationId: configuration.offer-properties.all + security: + - key: [] + - oauth: + - configuration_read + /configuration/candidate-properties: + get: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CandidatePropertyDefinitionList' + '403': + description: Permission denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get all candidate properties and their configuration for a company + tags: + - configuration + summary: Get a list of available candidate properties + operationId: configuration.candidate-properties.all + security: + - key: [] + - oauth: + - configuration_read + /configuration/candidate-properties/{id}: + parameters: + - $ref: '#/components/parameters/candidatePropertyId' + get: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CandidatePropertyDefinition' + '404': + description: Candidate property not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get candidate property details and its configuration by id. + tags: + - configuration + summary: Get candidate property by id + operationId: configuration.candidate-properties.get + security: + - key: [] + - oauth: + - configuration_read + /configuration/candidate-properties/{id}/values: + parameters: + - $ref: '#/components/parameters/candidatePropertyId' + get: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CandidatePropertyValueList' + '400': + description: >- + With code **CANDIDATE_PROPERTY_NOT_SINGLE_SELECT** when candidate + property type is not SINGLE_SELECT + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Candidate property not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Lists all available values for given candidate property id. This + endpoint is available only for SINGLE_SELECT candidate property type. + tags: + - configuration + summary: Get Candidate Property values + operationId: configuration.candidate-properties.values.all + security: + - key: [] + - oauth: + - configuration_read + post: + responses: + '201': + description: Created candidate property value + content: + application/json: + schema: + $ref: '#/components/schemas/CandidatePropertyValue' + '400': + description: > + With codes + + * **CANDIDATE_PROPERTY_NOT_SINGLE_SELECT** when candidate property + type is not SINGLE_SELECT + + * **CANDIDATE_PROPERTY_VALUES_LIMIT_EXCEEDED** when SINGLE_SELECT + candidate property values limit is exceeded + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Candidate property not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: > + with codes + + * **CANDIDATE_PROPERTY_VALUE_ID_ALREADY_EXISTS** when candidate + property with given id already exists, + + * **CANDIDATE_PROPERTY_VALUE_LABEL_ALREADY_EXISTS** when candidate + property with given label already exists. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Create SINGLE_SELECT candidate property value + tags: + - configuration + summary: Create candidate property value + operationId: configuration.candidate-properties.values.create + security: + - key: [] + - oauth: + - configuration_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CandidatePropertyValue' + description: Candidate property value. + required: true + /configuration/candidate-properties/{id}/values/{valueId}: + parameters: + - $ref: '#/components/parameters/candidatePropertyId' + - $ref: '#/components/parameters/candidatePropertyValueId' + get: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CandidatePropertyValue' + '400': + description: >- + With code **CANDIDATE_PROPERTY_NOT_SINGLE_SELECT** when candidate + property type is not SINGLE_SELECT + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **CANDIDATE_PROPERTY_NOT_FOUND** when candidate property with + given id does not exist, + + * **CANDIDATE_PROPERTY_VALUE_NOT_FOUND** when candidate property + value with given id does not exist. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get Candidate Property value by its id. + tags: + - configuration + summary: Get Candidate Property value by id + operationId: configuration.candidate-properties.values.get + security: + - key: [] + - oauth: + - configuration_read + put: + responses: + '201': + description: Updated candidate property value + content: + application/json: + schema: + $ref: '#/components/schemas/CandidatePropertyValue' + '400': + description: >- + With codes + + * **CANDIDATE_PROPERTY_NOT_SINGLE_SELECT** when candidate property + type is not SINGLE_SELECT + + * **CANDIDATE_PROPERTY_LIBRARY_READONLY_RESTRICTION** when modifying + read-only value options + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **CANDIDATE_PROPERTY_NOT_FOUND** when candidate property with + given id does not exist, + + * **CANDIDATE_PROPERTY_VALUE_NOT_FOUND** when candidate property + value with given id does not exist. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: > + with code **CANDIDATE_PROPERTY_VALUE_LABEL_ALREADY_EXISTS** when + candidate property with given label already exists. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Update candidate property value label + tags: + - configuration + summary: Update candidate property value label + operationId: configuration.candidate-properties.values.update + security: + - key: [] + - oauth: + - configuration_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CandidatePropertyValueLabel' + description: Candidate property value label. + required: true + delete: + responses: + '204': + description: '' + '400': + description: > + with codes: + + * **CANDIDATE_PROPERTY_NOT_SINGLE_SELECT** when candidate property + type is not SINGLE_SELECT, + + * **CANDIDATE_PROPERTY_LAST_VALUE** when attempting to remove the + last candidate property value + + * **CANDIDATE_PROPERTY_LIBRARY_READONLY_RESTRICTION** when + attempting to remove library property value + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **CANDIDATE_PROPERTY_NOT_FOUND** when candidate property with + given id does not exist, + + * **CANDIDATE_PROPERTY_VALUE_NOT_FOUND** when candidate property + value with given id does not exist. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Remove candidate property value label + tags: + - configuration + summary: Remove candidate property value + operationId: configuration.candidate-properties.values.delete + security: + - key: [] + - oauth: + - configuration_manage + /configuration/sources: + get: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/SourceTypes' + description: Get a list of all available candidate source type with subtypes + tags: + - configuration + summary: List candidate source types with subtypes + operationId: configuration.source.types + security: + - key: [] + - oauth: + - configuration_read + /configuration/sources/{sourceType}/values: + parameters: + - $ref: '#/components/parameters/sourceType' + get: + responses: + '200': + description: List of candidate sources + content: + application/json: + schema: + $ref: '#/components/schemas/Sources' + '400': + description: > + with codes + + * **SOURCE_TYPE_AND_SUBTYPE_INVALID** when provided pair (type, + subtype) is invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Source not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get a list of all available candidate sources by type. + tags: + - configuration + summary: List candidate sources + operationId: configuration.source.values.all + security: + - key: [] + - oauth: + - configuration_read + parameters: + - $ref: '#/components/parameters/sourceSubType' + - in: query + description: number of elements to return. max value is 100 + name: limit + required: false + schema: + type: integer + minimum: 1 + maximum: 100 + default: 100 + - in: query + description: number of elements to skip while processing result + name: offset + required: false + schema: + type: integer + minimum: 0 + default: 0 + /configuration/sources/{sourceType}/values/{sourceValueId}: + parameters: + - $ref: '#/components/parameters/sourceType' + - $ref: '#/components/parameters/sourceValueId' + get: + responses: + '200': + description: Source + content: + application/json: + schema: + $ref: '#/components/schemas/Source' + '400': + description: > + with codes: + + * **SOURCE_TYPE_INVALID** when provided type does not exist, + + * **SUBTYPE_REQUIRED** when there are more sources and subtype + parameter is required, + + * **SOURCE_TYPE_AND_SUBTYPE_INVALID** when provided pair (type, + subtype) is invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Source with given source value id not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get a single candidate sources for a given type. + tags: + - configuration + summary: Get a candidate source + operationId: configuration.source.values.single + security: + - key: [] + - oauth: + - configuration_read + parameters: + - $ref: '#/components/parameters/sourceSubType' + /configuration/sources/{sourceIdentifier}: + parameters: + - $ref: '#/components/parameters/sourceIdentifier' + get: + responses: + '200': + description: Source + content: + application/json: + schema: + $ref: '#/components/schemas/SourceDefinition' + '400': + description: |- + Invalid source identifier. With codes + * *INVALID_IDENTIFIER* - when identifier has invalid format. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: |- + Source with given identifier not found. With codes + * *SOURCE_NOT_FOUND* - when source is not found. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Get a single candidate source for a given identifier (included deleted + source). + tags: + - configuration + summary: Get a candidate source by identifier. + operationId: configuration.source.values.singleByIdentifier + security: + - key: [] + - oauth: + - configuration_read + /configuration/rejection-reasons: + get: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Properties' + description: Get rejection reasons + tags: + - configuration + summary: Get rejection reasons + operationId: configuration.reasons.rejection.all + security: + - key: [] + - oauth: + - configuration_read + /configuration/withdrawal-reasons: + get: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Properties' + '403': + description: Permission denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get withdrawal reasons + tags: + - configuration + summary: Get withdrawal reasons + operationId: configuration.reasons.withdrawal.all + security: + - key: [] + - oauth: + - configuration_read + /publications/{postingId}: + get: + tags: + - feed + summary: Get posting by id + description: >- + This endpoint allows getting a single job posting information.
You + must pass authentication token through X-SmartToken HTTP header. + operationId: findPostingUsingJson + parameters: + - name: postingId + in: path + description: Posting id to find + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: Posting successfully returned + content: + application/json: + schema: + $ref: '#/components/schemas/FeedJobAd' + '401': + description: Unauthorized + '404': + description: Not found + security: + - key: [] + put: + tags: + - feed + summary: Update posting information + description: >- +

This endpoint allows updating a single job posting status and + URL during a job posting lifecycle.
You must pass + authentication token through X-SmartToken HTTP + header.

Complete list of body parameters below:

Status - + This is the posting status on your job board. It should be updated with + one of the following values:
  • Active - set this status just + after you successfully publish a job to your job board; please provide a + direct URL to the published job in your job board using LiveUrl + so that we can surface it to SmartRecruiters + users
  • UnderPosting - set this status once you begin the + process of posting a job in your job board if your board does not + support immediate posting. When posting is complete, update the status + to Active
  • Inactive - set this status once the job + is no longer published to your job board
  • Error - set this + status when an error prevents the job from being published to your job + board; please provide error details using the Comment + field
LiveUrl - This is direct URL to the job you have + published in your job board; will be surfaced to SmartRecruiters + users
Comment - This is field in which you pass error details + when one occurs while publishing a job; error details will be available + to our Support Team

+ operationId: updatePostingUsingJson + parameters: + - name: postingId + in: path + description: >- + A single posting id. Allows updating information only for the + defined postings. + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/PostingUpdateRequest' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/PostingUpdateRequest' + required: true + responses: + '204': + description: Posting successfully updated + '400': + description: Payload not valid + '401': + description: Wrong token + '404': + description: PostingId not found + security: + - key: [] + /publications: + get: + tags: + - feed + summary: Get a list of postings + description: >- +

Get job postings published to your job board.
You must pass + authentication token through X-SmartToken HTTP header.

By + default, this endpoint will return only postings created in the last 30 + days with the status Pending. Use additional parameters to + control which postings are returned.

+ operationId: postingsJSONStream + parameters: + - name: updatedAfter + in: query + description: >- + List postings created after the specified date.

Date + should be in ISO 8601 format: (e.g.: + '2015-07-27T08:43:33.000Z').

If no value is provided, only + postings created in the last 30 days will be returned. + schema: + type: string + - name: status + in: query + description: >- + List of posting statuses separated by comma.

Status + definition:
  • Pending - this is a new posting that + is pending publication on your job board. You should always retrieve + these postings, publish them, and then update the status via the + PUT method.
  • UnderPosting - this is a status + that is only set by you. It indicates that a posting is currently + being published but is not yet available on the job board. + SmartRecruiters will never set this status + ourselves.
  • Active - this is a status that is only set + by you. It indicates that the posting has been successfully + published and is available on the job board. SmartRecruiters will + never set this status ourselves.
  • toUnpost - this + posting has either expired or has manually been requested for + removal by the client. As a job board, you should unpost these + postings immediately, and then update the status to Inactive + via the PUT method.
  • Inactive - this is a + status that is only set by you. It indicates that the posting has + been successfully unpublished and is no longer available on the job + board. SmartRecruiters will never set this status + ourselves.
  • Error - this is a status only set by you. + It indicates that the posting could not be published. + SmartRecruiters will never set this status + ourselves.

Example: status=Active,Error + schema: + type: array + items: + type: string + enum: + - Pending + - UnderPosting + - Active + - toUnpost + - Inactive + - Error + default: Pending + - name: offset + in: query + description: >- + Number of elements to skip while processing result.
Allowed + range: [0, 2^31-1]. + schema: + minimum: 0 + type: string + default: '0' + - name: limit + in: query + description: 'Maximum number of postings returned.
Allowed range: [0, 100].' + schema: + maximum: 100 + minimum: 0 + type: string + default: '100' + responses: + '200': + description: Postings successfully returned + content: + application/json: + schema: + $ref: '#/components/schemas/FeedPublication' + '401': + description: Unauthorized + '404': + description: Not found + security: + - key: [] + /interview-types: + get: + responses: + '200': + description: Retrieves interview types + content: + application/json: + schema: + $ref: '#/components/schemas/InterviewTypes' + '500': + $ref: '#/components/responses/ServerError' + tags: + - interview types + summary: Retrieves interview types + operationId: types.get + security: + - key: [] + - oauth: + - interview_types_read + patch: + responses: + '204': + description: Interview types updated + '403': + description: Forbidden to create an interview type + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: > + with codes: + + * **INTERVIEW_TYPES_SIZE_EXCEEDED** when maximum size of 2000 + interview types exceeded + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: When input validation fails + '500': + $ref: '#/components/responses/ServerError' + tags: + - interview types + summary: Adds interview types to already existing ones + operationId: types.update + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/InterviewTypes' + description: Interview types to be added + required: true + security: + - key: [] + - oauth: + - interview_types_write + /interview-types/{interviewType}: + parameters: + - $ref: '#/components/parameters/InterviewType' + delete: + responses: + '204': + description: Interview type deleted + '403': + description: Forbidden to delete an interview type + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **INTERVIEW_TYPE_NOT_FOUND** When no interview type with given + name + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - interview types + summary: Removes interview type with given name + operationId: types.delete + security: + - key: [] + - oauth: + - interview_types_write + /interviews: + get: + parameters: + - $ref: '#/components/parameters/ApplicationId' + responses: + '200': + description: List of interviews + content: + application/json: + schema: + $ref: '#/components/schemas/InterviewsList' + '403': + description: Forbidden to access interviews list + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **APPLICATION_NOT_FOUND** when no application found with given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - interviews + summary: Retrieves a list of interviews + description: List of interviews + operationId: interviews.get-list + security: + - key: [] + - oauth: + - interviews_read + post: + responses: + '201': + description: Created interview + content: + application/json: + schema: + $ref: '#/components/schemas/Interview' + '400': + description: | + with codes: + * **INVALID_TIMEZONE** when invalid timezone + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden to create an interview + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + When input validation fails or with codes: + + * **INACTIVE_OR_DELETED_ORGANIZER** when inactive or deleted + organizer + + * **INACTIVE_OR_DELETED_INTERVIEWERS** when at least one of the + interviewers is inactive or deleted + + * **END_DATE_BEFORE_START_DATE** when end date of the timeslot is + before start date + + * **NON_EXISTING_ORGANIZER** when organizer does not exist + + * **NON_EXISTING_INTERVIEWERS** when at least one of the + interviewers does not exist + + * **CANDIDATE_NOT_FOUND** when candidate with given id not found + + * **JOB_NOT_FOUND** when job with given id not found + + * **APPLICATION_NOT_FOUND** when application for given candidate id + and job id not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - interviews + summary: Creates an interview + operationId: interviews.create + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Interview' + description: Interview to be added + required: true + security: + - key: [] + - oauth: + - interviews_write + /interviews/{interviewId}: + parameters: + - $ref: '#/components/parameters/InterviewId' + get: + responses: + '200': + description: Interview + content: + application/json: + schema: + $ref: '#/components/schemas/Interview' + '403': + description: Forbidden to access an interview + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **INTERVIEW_NOT_FOUND** when no interview with given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - interviews + summary: Retrieves an interview + description: Interview details + operationId: interviews.get + security: + - key: [] + - oauth: + - interviews_read + patch: + responses: + '204': + description: Interview updated + '400': + description: | + with codes: + * **INVALID_TIMEZONE** when invalid timezone + '403': + description: Forbidden to update an interview + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **INTERVIEW_NOT_FOUND** when no interview with given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: When input validation fails + '500': + $ref: '#/components/responses/ServerError' + tags: + - interviews + summary: Modifies an interview + operationId: interviews.update + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/InterviewToUpdateInput' + description: Interview to be updated + required: true + security: + - key: [] + - oauth: + - interviews_write + delete: + responses: + '204': + description: Interview was deleted + '403': + description: Forbidden to delete an interview + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **INTERVIEW_NOT_FOUND** when no interview with given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - interviews + summary: Deletes an interview + operationId: interviews.delete + security: + - key: [] + - oauth: + - interviews_write + /interviews/{interviewId}/timeslots: + post: + responses: + '201': + description: Created timeslot with id + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/Timeslot' + '403': + description: Forbidden to create a timeslot + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **INTERVIEW_NOT_FOUND** when no interview with given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: > + with codes: + + * **CANNOT_ADD_MORE_TIMESLOTS** when interview already contains + maximum number of timeslots + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + When input validation fails or with codes: + + * **INACTIVE_OR_DELETED_INTERVIEWERS** when at least one of the + interviewers is inactive or deleted + + * **END_DATE_BEFORE_START_DATE** when end date of the timeslot is + before start date + + * **NON_EXISTING_INTERVIEWERS** when at least one of the + interviewers does not exist + '500': + $ref: '#/components/responses/ServerError' + tags: + - timeslots + summary: Creates a timeslot + operationId: timeslots.create + parameters: + - $ref: '#/components/parameters/InterviewId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Timeslot' + description: Timeslot to be added + required: true + security: + - key: [] + - oauth: + - interviews_write + /interviews/{interviewId}/timeslots/{timeslotId}: + parameters: + - $ref: '#/components/parameters/InterviewId' + - $ref: '#/components/parameters/TimeslotId' + get: + responses: + '200': + description: Timeslot + content: + application/json: + schema: + $ref: '#/components/schemas/Timeslot' + '403': + description: Forbidden to access a timeslot + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **INTERVIEW_NOT_FOUND** when no interview with given id + * **TIMESLOT_NOT_FOUND** when no timeslot with given id + '500': + $ref: '#/components/responses/ServerError' + tags: + - timeslots + summary: Retrieves a timeslot + operationId: timeslots.get + security: + - key: [] + - oauth: + - interviews_read + patch: + responses: + '204': + description: Timeslot updated + '400': + description: Missing data in timeslot object + '403': + description: Forbidden to update a timeslot + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **INTERVIEW_NOT_FOUND** when no interview with given id + * **TIMESLOT_NOT_FOUND** when no timeslot with given id + '422': + description: > + When input validation fails or with codes: + + * **INACTIVE_OR_DELETED_INTERVIEWERS** when at least one of the + interviewers is inactive or deleted + + * **END_DATE_BEFORE_START_DATE** when end date of the timeslot is + before start date + + * **NON_EXISTING_INTERVIEWERS** when at least one of the + interviewers does not exist + '500': + $ref: '#/components/responses/ServerError' + tags: + - timeslots + summary: Modifies a timeslot + operationId: timeslots.update + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Timeslot' + description: Timeslot to be updated + required: true + security: + - key: [] + - oauth: + - interviews_write + delete: + responses: + '204': + description: Timeslot deleted + '403': + description: Forbidden to delete a timeslot + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **INTERVIEW_NOT_FOUND** when no interview with given id + * **TIMESLOT_NOT_FOUND** when no timeslot with given id + '409': + description: | + with codes: + * **CANNOT_DELETE_LAST_TIMESLOT** when cannot delete last timeslot + '500': + $ref: '#/components/responses/ServerError' + tags: + - timeslots + summary: Deletes a timeslot + operationId: timeslots.delete + security: + - key: [] + - oauth: + - interviews_write + /interviews/{interviewId}/candidate/status: + parameters: + - $ref: '#/components/parameters/InterviewId' + put: + responses: + '204': + description: Status successfully changed + '403': + description: Forbidden to change candidate's status + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **INTERVIEW_NOT_FOUND** when no interview with given id + '422': + description: When input validation fails + '500': + $ref: '#/components/responses/ServerError' + tags: + - statuses + summary: Changes a candidate's status. + operationId: statuses.candidate.put + deprecated: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AttendeeStatus' + description: New candidate's status + required: true + security: + - key: [] + - oauth: + - interviews_write + /interviews/{interviewId}/timeslots/{timeslotId}/interviewers/{userId}/status: + parameters: + - $ref: '#/components/parameters/InterviewId' + - $ref: '#/components/parameters/TimeslotId' + - $ref: '#/components/parameters/UserId' + put: + responses: + '204': + description: Status successfully changed + '403': + description: Forbidden to change interviewer's status + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **INTERVIEW_NOT_FOUND** when no interview with given id * + **TIMESLOT_NOT_FOUND** when no timeslot with given id * + **NON_EXISTING_INTERVIEWERS** when no interviewer with given id + exists in timeslot + '422': + description: When input validation fails + '500': + $ref: '#/components/responses/ServerError' + tags: + - statuses + summary: Changes a interviewer's status in given timeslot + operationId: statuses.interviewer.put + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AttendeeStatus' + description: New interviewer's status + required: true + security: + - key: [] + - oauth: + - interviews_write + /interviews/{interviewId}/timeslots/{timeslotId}/candidateStatus: + parameters: + - $ref: '#/components/parameters/InterviewId' + - $ref: '#/components/parameters/TimeslotId' + put: + summary: Changes a candidate's status in given timeslot + operationId: statuses.timeslot-candidate.put + tags: + - statuses + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AttendeeStatus' + description: New candidate's status + required: true + responses: + '204': + description: Candidate status in a timeslot is successfully changed + '403': + description: Forbidden to change candidates's status in a timeslot + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **INTERVIEW_NOT_FOUND** when no interview with given id * + **TIMESLOT_NOT_FOUND** when no timeslot with given id + '422': + description: When input validation fails + '500': + $ref: '#/components/responses/ServerError' + security: + - key: [] + - oauth: + - interviews_write + /jobs/{jobId}/positions: + parameters: + - $ref: '#/components/parameters/jobId' + get: + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: Job's positions + content: + application/json: + schema: + $ref: '#/components/schemas/JobPositions' + '403': + description: Job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - jobs + summary: Positions for a job + operationId: jobs.positions.all + security: + - key: [] + - oauth: + - jobs_read + post: + responses: + '201': + description: Created position + content: + application/json: + schema: + $ref: '#/components/schemas/JobPosition' + '403': + description: | + with codes + * **APPROVAL_PROCESS_ENABLED** when approval process is enabled + * **PERMISSION_DENIED** when job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - jobs + summary: Create a new position for a job + operationId: jobs.positions.create + security: + - key: [] + - oauth: + - jobs_manage + requestBody: + $ref: '#/components/requestBodies/JobPositionInput' + /jobs/{jobId}/positions/{positionId}: + parameters: + - $ref: '#/components/parameters/jobId' + - $ref: '#/components/parameters/positionId' + get: + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: Found position + content: + application/json: + schema: + $ref: '#/components/schemas/JobPosition' + '403': + description: Job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Position not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - jobs + summary: Get a single position + operationId: jobs.positions.get + security: + - key: [] + - oauth: + - jobs_read + put: + responses: + '201': + description: Updated position + content: + application/json: + schema: + $ref: '#/components/schemas/JobPosition' + '403': + description: | + with codes + * **APPROVAL_PROCESS_ENABLED** when approval process is enabled + * **PERMISSION_DENIED** when job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Position not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - jobs + summary: Update position + operationId: jobs.positions.update + security: + - key: [] + - oauth: + - jobs_manage + requestBody: + $ref: '#/components/requestBodies/JobPositionInput' + delete: + responses: + '204': + description: Position successfully removed + '400': + description: >- + with code **POSITION_ASSIGNED** when position has candidate already + assigned and cannot be removed + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: | + with codes + * **APPROVAL_PROCESS_ENABLED** when approval process is enabled + * **PERMISSION_DENIED** when job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Position not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - jobs + summary: Delete position + operationId: jobs.positions.remove + security: + - key: [] + - oauth: + - jobs_manage + /jobs/{jobId}/jobads: + parameters: + - $ref: '#/components/parameters/jobId' + get: + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: Job's job ads + content: + application/json: + schema: + $ref: '#/components/schemas/JobAds' + '404': + description: Job not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - jobs + summary: Find and list job ads for a given job + operationId: jobs.jobads.all + security: + - key: [] + - oauth: + - jobs_read + post: + responses: + '200': + description: Created job ad. + content: + application/json: + schema: + $ref: '#/components/schemas/JobAdItem' + '400': + description: > + with codes + + * **JOB_AD_LIMIT_REACHED** when job add limit (100 per job) is + reached + + * **PROPERTY_INVALID** when one of job ad attribute contains invalid + characters + '404': + description: Job not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - jobs + summary: Create a new job ad + operationId: jobs.jobads.create + security: + - key: [] + - oauth: + - jobs_manage + requestBody: + $ref: '#/components/requestBodies/JobAdContent' + /jobs/{jobId}/jobads/{jobAdId}: + parameters: + - $ref: '#/components/parameters/jobId' + - $ref: '#/components/parameters/jobAdId' + get: + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: Job ad + content: + application/json: + schema: + $ref: '#/components/schemas/JobAdItem' + '404': + description: Job or job ad not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - jobs + summary: Get a job ad + operationId: jobs.jobads.get + security: + - key: [] + - oauth: + - jobs_read + put: + responses: + '200': + description: Updated job ad + content: + application/json: + schema: + $ref: '#/components/schemas/JobAdItem' + '400': + description: > + with code + + * **PROPERTY_INVALID** when one of job ad attribute contains invalid + characters + '404': + description: Job or job ad not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Enables you to update an existing job ad. + + NOTE: In order for a job ad changes to be reflected on internal sources + (Career Sites, Job Widgets etc.) and Job Aggregators, you need to + Publish the job ad after making an update. + tags: + - jobs + summary: Update a job ad + operationId: jobs.jobads.update + security: + - key: [] + - oauth: + - jobs_manage + requestBody: + $ref: '#/components/requestBodies/JobAdContent' + /jobs/{jobId}/jobads/{jobAdId}/postings: + parameters: + - $ref: '#/components/parameters/jobId' + - $ref: '#/components/parameters/jobAdId' + post: + responses: + '202': + description: Posting scheduled + content: + application/json: + schema: + $ref: '#/components/schemas/JobAdPublicationScheduled' + '400': + description: > + with code + + * **PUBLISHED_JOB_AD_LIMIT_REACHED** when company's limit for + published job ads has been reached + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: | + with code + * **ACCESS_FORBIDDEN** when user is not authorize to publish a job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with code + + * **JOB_NOT_POSTED** when default job ad for the job has not been + published + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + * **JOBAD_NOT_FOUND** when job ad has not been found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Publishes a job ad to internal sources (Career Pages, Job Widget, + Facebook App, WordPress Plugin, Posting API) and optionally to all free + job aggregators. + + + By default it's set to publish to job aggregators + + + It reflects a Publish action available in the SmartRecruiters UI. + + + Note: Internal sources depend on a company's payment plan. + tags: + - jobs + summary: Publishes a job ad + operationId: jobs.jobads.postings.create + security: + - key: [] + - oauth: + - jobs_manage + requestBody: + $ref: '#/components/requestBodies/Publication' + get: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/PublicationList' + '403': + description: > + with code + + * **ACCESS_FORBIDDEN** when user is not authorized to access job ad + postings + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + * **JOBAD_NOT_FOUND** when job ad has not been found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: List publications for a job ad + tags: + - jobs + summary: List publications for a job ad + operationId: jobs.jobads.postings.all + security: + - key: [] + - oauth: + - jobs_read + parameters: + - $ref: '#/components/parameters/language' + - in: query + description: >- + publication status filter; when omitted, defaults to 'true' (only + active publications are returned); 'false' returns active and + inactive publications + name: activeOnly + required: false + schema: + type: boolean + default: true + delete: + responses: + '202': + description: Unpost scheduled + content: + application/json: + schema: + $ref: '#/components/schemas/JobAdUnpublishScheduled' + '401': + description: > + with code + + * **ACCESS_FORBIDDEN** when user is not authorized to unpublish job + ad + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + * **JOBAD_NOT_FOUND** when job ad has not been found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Unpublishes a job ad from all sources. + + + **Unpublishing a default job ad will unpublish all other job ads within + that job.** + tags: + - jobs + summary: Unpublish a job ad + operationId: jobs.jobads.postings.unpublish + security: + - key: [] + - oauth: + - jobs_manage + /jobs/{jobId}/publication: + parameters: + - $ref: '#/components/parameters/jobId' + post: + responses: + '204': + description: '' + '400': + description: > + with code + + * **PUBLISHED_JOB_AD_LIMIT_REACHED** when company's limit for + published job ads has been reached + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: > + with code + + * **UNAUTHORIZED_TO_ACCESS_JOB** - when user is not authorized to + access the job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with code + + * **NOT_AUTHORIZED_TO_PUBLISH_JOB** - when user is not authorized to + publish the job or approval process for the job is required + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Publishes default job ad to internal sources and to free job + aggregators. + + + It reflects a Publish action available in the SmartRecruiters UI. + + + Note: + Internal sources: Career Pages, Job Widget, Facebook App, WordPress Plugin, Posting API depend on a company's payment plan. + tags: + - jobs + summary: Publishes a default job ad + operationId: jobs.publication.create + security: + - key: [] + - oauth: + - jobs_publications_manage + requestBody: + $ref: '#/components/requestBodies/Publication' + delete: + responses: + '204': + description: '' + '401': + description: > + with code + + * **UNAUTHORIZED_TO_ACCESS_JOB** - when user is not authorized to + access the job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unpublishes a job from all sources + tags: + - jobs + summary: Unpublishes a job from all sources + operationId: jobs.publication.unpublish + security: + - key: [] + - oauth: + - jobs_publications_manage + get: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/PublicationList' + '401': + description: > + with code + + * **UNAUTHORIZED_TO_ACCESS_JOB** - when user is not authorized to + access the job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Find and list publications for a job + tags: + - jobs + summary: Find and list publications for a job + operationId: jobs.publication.all + security: + - key: [] + - oauth: + - jobs_read + parameters: + - $ref: '#/components/parameters/language' + - in: query + description: >- + publication status filter; defaults to 'true' (only active + publications are returned); 'false' returns active and inactive + publications + name: activeOnly + required: false + schema: + type: boolean + default: true + /jobs/{jobId}/hiring-team: + parameters: + - $ref: '#/components/parameters/jobId' + get: + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: Hiring team members + content: + application/json: + schema: + $ref: '#/components/schemas/HiringTeamMembers' + '401': + description: Job access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get hiring team of a job with a given id. + tags: + - jobs + summary: Get hiring team of a job with a given id. + operationId: jobs.hiring-team.get + security: + - key: [] + - oauth: + - jobs_read + post: + responses: + '200': + description: Added hiring team member + content: + application/json: + schema: + $ref: '#/components/schemas/HiringTeamMemberResponse' + '400': + description: | + with code + * **USER_NOT_FOUND** when user with given id does not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Job access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: User is already a member of the hiring team + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Add hiring team member of a job with a given id + tags: + - jobs + summary: Add hiring team member of a job with a given id. + operationId: jobs.hiring-team.add + security: + - key: [] + - oauth: + - jobs_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/HiringTeamMember' + description: HiringTeamMember object + /jobs/{jobId}/hiring-team/{userId}: + parameters: + - $ref: '#/components/parameters/jobId' + - in: path + description: user identifier + name: userId + required: true + schema: + type: string + delete: + responses: + '204': + description: '' + '400': + description: | + with code + * **INVALID_HIRING_TEAM_STATE** when removing the last hiring + team member. Each hiring team should have at least one member. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Job access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: User is not a member of the hiring team + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Removes hiring team member of a job with a given id. + tags: + - jobs + summary: Removes hiring team member of a job with a given id. + operationId: jobs.hiring-team.remove + security: + - key: [] + - oauth: + - jobs_manage + /jobs/{jobId}/note: + parameters: + - $ref: '#/components/parameters/jobId' + get: + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: Job note. + content: + application/json: + schema: + $ref: '#/components/schemas/JobNote' + '401': + description: Job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Job note not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - jobs + summary: Get note of a job. + operationId: jobs.notes.get + security: + - key: [] + - oauth: + - jobs_read + put: + responses: + '200': + description: Updated note. + content: + application/json: + schema: + $ref: '#/components/schemas/JobNote' + '401': + description: Job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Update note of a job. + tags: + - jobs + summary: Update note of a job. + operationId: jobs.notes.update + security: + - key: [] + - oauth: + - jobs_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/JobNote' + required: true + /jobs/{jobId}/headcount: + parameters: + - $ref: '#/components/parameters/jobId' + patch: + description: Update job headcount. + tags: + - jobs + summary: Update job headcount. + operationId: jobs.headcount.update + security: + - key: [] + - oauth: + - jobs_manage + responses: + '202': + description: Accepted headcount update request + content: + application/json: + schema: + $ref: '#/components/schemas/HeadcountUpdateAccepted' + '400': + description: > + with codes + + * **CANNOT_START_APPROVAL_PROCESS** when approval process cannot be + started + + * **INVALID_SALARY_RANGE** when salary range is not valid + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: | + with codes + * **PERMISSION_DENIED** when job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with codes + + * **APPROVAL_PROCESS_NOT_ENABLED** when approval process is not + enabled + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/HeadcountPatchRequest' + required: true + /jobs: + get: + responses: + '200': + description: >- + Jobs matching search criteria. | Note that location returned by this + endpoint will **not** provide latitude and longitude. + content: + application/json: + schema: + $ref: '#/components/schemas/Jobs' + headers: + Link: + schema: + type: string + description: > + Links to related resources, in the format defined by + + [RFC 5988](https://tools.ietf.org/html/rfc5988#section-5). + + This will include a link with relation type `next` to the + + next page (containing `pageId` query parameter), if there is a + next page. + '400': + description: | + with codes + * **INVALID_PAGE_ID** - provided page id is invalid + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Search jobs by params. + tags: + - jobs + summary: Search jobs + operationId: jobs.all + security: + - key: [] + - oauth: + - jobs_read + parameters: + - $ref: '#/components/parameters/language' + - in: query + description: >- + full-text search query based on a job title; case insensitive; e.g. + java developer + name: q + required: false + schema: + type: string + - in: query + description: number of elements to return. max value is 100 + name: limit + required: false + schema: + type: integer + minimum: 1 + maximum: 100 + default: 10 + - in: query + description: >- + number of elements to skip while processing result; this method of + paging is very slow and is deprecated, please use `pageId` instead + name: offset + required: false + deprecated: true + schema: + type: integer + minimum: 0 + default: 0 + maximum: 10000000 + - in: query + description: >- + unique identifier for next page of jobs - returned as `nextPageId` + in previous page result. You must set `job_id` value for `sort` + parameter if you use `pageId`. + name: pageId + required: false + schema: + type: string + - in: query + description: >- + Order in which results are returned. + + - default - sorts results by creation date or by match score and + creation date if query (q) is set. Can't be used with pageId + parameter (request might not return all results) + + - job_id - sorts results by job id. The only supported sorting order + when using pageId based pagination. + name: sort + required: false + schema: + type: string + enum: + - default + - job_id + - in: query + description: >- + city filter (part of the location object); can be used repeatedly; + case sensitive; e.g. San Francisco + name: city + required: false + explode: true + schema: + type: array + items: + type: string + - in: query + description: >- + department filter (by department label); can be used repeatedly; + case sensitive; e.g. “Marketing” + name: department + required: false + explode: true + schema: + type: array + items: + type: string + - in: query + description: >- + ISO8601-formatted time boundaries for the job update time, Format: + yyyy-MM-ddTHH:mm:ss.SSSZZ + name: updatedAfter + required: false + schema: + type: string + format: date-time + - in: query + description: > + ISO8601-formatted time boundaries for the job lastActivityOn time, + Format: yyyy-MM-ddTHH:mm:ss.SSSZZ. + + lastActivityOn is updated when job is edited, new candidates apply + or job is published. + name: lastActivityAfter + required: false + schema: + type: string + format: date-time + - in: query + description: | + Exceptions to the language code ISO format: + * "en-GB" - "English - English (UK)" + * "es-MX" - "Spanish - español (México)" + * "fr-CA" - "French - français (Canada)" + * "pt-BR" - "Portugal - português (Brasil)" + * "zh-TW" - "Chinese (Traditional) - 中文 (香港)" + * "zh-CN" - "Chinese (Simplified) - 中文 (简体)" + + + Value "pt-PT" is deprecated and will not work, use "pt" instead. + name: language + required: false + schema: + type: string + enum: + - af + - am + - ar + - az + - bg + - bn + - ca + - cs + - cy + - da + - de + - el + - en + - en-GB + - es + - es-MX + - et + - eu + - fa + - fi + - fil + - fr + - fr-CA + - ga + - gl + - gu + - he + - hi + - hr + - hu + - hy + - id + - is + - it + - ja + - ka + - km + - kn + - ko + - lo + - lt + - lv + - ml + - mn + - mr + - ms + - ne + - nl + - 'no' + - pl + - pt + - pt-BR + - ro + - ru + - si + - sk + - sl + - sr + - sv + - sw + - ta + - te + - tr + - uk + - ur + - vi + - zh-CN + - zh-TW + - zu + - in: query + description: | + Status of a job + name: status + required: false + schema: + type: string + enum: + - CREATED + - SOURCING + - FILLED + - INTERVIEW + - OFFER + - CANCELLED + - ON_HOLD + - in: query + description: | + Posting status of a job + name: postingStatus + required: false + schema: + type: string + enum: + - PUBLIC + - INTERNAL + - NOT_PUBLISHED + - PRIVATE + post: + responses: + '201': + description: Created job + content: + application/json: + schema: + $ref: '#/components/schemas/JobDetails' + '400': + description: > + with codes + + * **DEPARTMENT_NOT_FOUND** when provided department does not exist, + + * **INDUSTRY_NOT_FOUND** when provided industry does not exist, + + * **FUNCTION_NOT_FOUND** when provided function does not exist, + + * **TYPE_OF_EMPLOYMENT_NOT_FOUND** when provided type of employment + does not exist, + + * **JOB_AD_LANGUAGE_NOT_FOUND** when provided job ad language does + not exist, + + * **EEO_CATEGORY_NOT_FOUND** when provided eeo category does not + exist, + + * **EXPERIENCE_LEVEL_NOT_FOUND** when provided experience level does + not exist, + + * **CITY_NOT_FOUND** when provided city does not exist, + + * **INVALID_GEO_DATA** when latitude or longitude parameters are + invalid + + * **JOB_PROPERTY_REQUIRED** when some job property is required to + create job, + + * **JOB_PROPERTY_PARENT_VALUE_MISSING** when job property is set but + value for its parent is missing, + + * **INVALID_JOB_PROPERTY_VALUE_ID** when provided job property value + id does not exist for required property, + + * **INVALID_JOB_PROPERTY_VALUE_TYPE** when invalid value type is + used for job property, + + * **JOB_PROPERTY_VALUE_NOT_AVAILABLE_FOR_SELECTED_PARENT_VALUE** + when job property's value is not available for selected parent + value, + + * **VALUE_INACTIVE** when job property's value is not active and + cannot be set. + + * **INVALID_TEXT_FORMAT** when job property's value contains invalid + text + + * **INVALID_BRAND_VALUE** when provided brand value is invalid + + * **TYPE_OF_EMPLOYMENT_NOT_ALLOWED** when provided type of + employment is not allowed in country + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: | + with codes + * **JOB_TEMPLATES_MANAGEMENT_FORBIDDEN** when not allowed to create + job templates. + * **PERMISSION_DENIED** when job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: > + with code + + * **REF_NUMBER_ALREADY_EXISTS** when provided ref number already + exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Input validation fails + description: >- + Create a new job. Ignores all nonexistent job properties and job + properties values. + tags: + - jobs + summary: Create a new job + operationId: jobs.create + security: + - key: [] + - oauth: + - jobs_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/JobInput' + description: Job object that needs to be created + /jobs/{jobId}: + parameters: + - $ref: '#/components/parameters/jobId' + get: + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: Job + content: + application/json: + schema: + $ref: '#/components/schemas/JobDetails' + '401': + description: Job access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get content of a job with a given id. + tags: + - jobs + summary: Get content of a job with a given id. + operationId: jobs.get + security: + - key: [] + - oauth: + - jobs_read + patch: + responses: + '200': + description: Updated job + content: + application/json: + schema: + $ref: '#/components/schemas/JobDetails' + '400': + description: > + with codes + + * **DEPARTMENT_NOT_FOUND** when provided department does not exist, + + * **INDUSTRY_NOT_FOUND** when provided industry does not exist, + + * **FUNCTION_NOT_FOUND** when provided function does not exist, + + * **TYPE_OF_EMPLOYMENT_NOT_FOUND** when provided type of employment + does not exist, + + * **JOB_AD_LANGUAGE_NOT_FOUND** when provided job ad language does + not exist, + + * **EEO_CATEGORY_NOT_FOUND** when provided eeo category does not + exist, + + * **JOB_PROPERTY_REQUIRED** when some job property is required, + + * **INVALID_JOB_PROPERTY_VALUE_ID** when provided job property value + id does not exist for required property, + + * **INVALID_JOB_PROPERTY_VALUE_TYPE** when invalid value type is + used for job property, + + * **VALUE_INACTIVE** when job property's value is not active and + cannot be set. + + * **INVALID_TEXT_FORMAT** when job property's value contains invalid + text + + * **INVALID_BRAND_VALUE** when provided brand value is invalid + + * **TYPE_OF_EMPLOYMENT_NOT_ALLOWED** when provided type of + employment is not allowed in country + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Job access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with code + + * **JOB_TEMPLATES_MANAGEMENT_FORBIDDEN** when not allowed to change + job to a job template. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Input validation fails + description: >- + Update a job. All attributes that are used when creating a job can be + used. Ignores all nonexistent job properties and job properties values. + tags: + - jobs + summary: Update a job + operationId: jobs.patch + security: + - key: [] + - oauth: + - jobs_manage + requestBody: + $ref: '#/components/requestBodies/JSONPatch' + put: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JobDetails' + '400': + description: > + with codes + + * **DEPARTMENT_NOT_FOUND** when provided department does not exist, + + * **INDUSTRY_NOT_FOUND** when provided industry does not exist, + + * **FUNCTION_NOT_FOUND** when provided function does not exist, + + * **TYPE_OF_EMPLOYMENT_NOT_FOUND** when provided type of employment + does not exist, + + * **JOB_AD_LANGUAGE_NOT_FOUND** when provided job ad language does + not exist, + + * **EEO_CATEGORY_NOT_FOUND** when provided eeo category does not + exist, + + * **JOB_PROPERTY_REQUIRED** when some job property is required to + create job, + + * **INVALID_JOB_PROPERTY_VALUE_ID** when provided job property value + id does not exist for required property, + + * **INVALID_JOB_PROPERTY_VALUE_TYPE** when invalid value type is + used for job property, + + * **VALUE_INACTIVE** when job property's value is not active and + cannot be set. + + * **INVALID_TEXT_FORMAT** when job property's value contains invalid + text + + * **INVALID_BRAND_VALUE** when provided brand value is invalid + + * **TYPE_OF_EMPLOYMENT_NOT_ALLOWED** when provided type of + employment is not allowed in country + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Job access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with code + + * **JOB_TEMPLATES_MANAGEMENT_FORBIDDEN** when not allowed to create + job templates. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Input validation fails + description: >- + Enables you to update job and it's jobAd. This operation requires + passing a job id within path and job's new state within body of the PUT + request. Ignores all nonexistent job properties and job properties + values. However jobAd and all it's properties need to be provided. All + jobAd's properties will be removed if not provided. Returns an updated + job with jobAd. + tags: + - jobs + summary: Updates job + operationId: jobs.update + security: + - key: [] + - oauth: + - jobs_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/JobInput' + description: Job that needs to be updated + /jobs/{jobId}/status: + parameters: + - $ref: '#/components/parameters/jobId' + put: + responses: + '201': + description: Updated job status + content: + application/json: + schema: + $ref: '#/components/schemas/JobStatusUpdate' + '403': + description: Job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Job not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - jobs + summary: Updates job status + operationId: jobs.status.update + security: + - key: [] + - oauth: + - jobs_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/JobStatusUpdate' + required: true + /jobs/{jobId}/status/history: + parameters: + - $ref: '#/components/parameters/jobId' + get: + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: Job status history + content: + application/json: + schema: + $ref: '#/components/schemas/JobStatusHistory' + '401': + description: Job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - jobs + summary: Job status history + operationId: jobs.status.history.get + security: + - key: [] + - oauth: + - jobs_read + /jobs/{jobId}/approvals/latest: + parameters: + - $ref: '#/components/parameters/jobId' + get: + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: Job details of latest approval request + content: + application/json: + schema: + $ref: '#/components/schemas/JobApproval' + '401': + description: Job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with codes + + * **NO_ACCESS_TO_APPROVALS** when not permitted to access job + approvals + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes + * **APPROVALS_NOT_FOUND** There is no approval for current job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - jobs + summary: Get latest approval request for given job + operationId: jobs.approvals.latest + security: + - key: [] + - oauth: + - jobs_read + /job-applications/{jobApplicationId}: + parameters: + - $ref: '#/components/parameters/JobApplicationId' + get: + responses: + '200': + description: Job application + content: + application/json: + schema: + $ref: '#/components/schemas/JobApplication' + '400': + description: | + with codes: + * **INVALID_JOB_APPLICATION_ID** when invalid jobApplicationId + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **JOB_APPLICATION_NOT_FOUND** when job application not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get a job application for given job application ID. + operationId: job-applications.getById + tags: + - job-applications + summary: Get a job application + security: + - key: [] + - oauth: + - job_applications_read + /messages/shares: + post: + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/MessageDetails' + '400': + description: > + with codes: + + * **INVALID_VISIBILITY_OPTIONS** when specifying openNote and + everyone flag set to true in the same time, + + * **JOB_NOT_FOUND** when sharing with hiring team of jobs that do + not exist, + + * **NO_ACCESS_TO_CANDIDATE** when tagging candidate you do not have + access to, + + * **MENTIONED_USERS_NOT_FOUND** when mentioning users that do not + exist, + + * **SHARED_WITH_USERS_NOT_FOUND** when sharing with users that do + not exist, + + * **TOO_MANY_RECIPIENTS**, when more than 100 message recipients in + total (mentioned directly or being a part of mentioned hiring teams) + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + How does it work: + + * In **content** field, provide a text to be shared. + + * @-mention users to send them an email + * In **content** field use **@[USER:id]** to mention a User, e.g. @[USER:324132421] + * Email responses are added as comments to your update + + * \#-tag candidates to link updates to their profiles + * In **content** field use **#[CANDIDATE:id]** to tag a candidate, e.g. #[CANDIDATE:9847954623] + * Use **shareWith** to share a feed update with individuals, hiring + teams or everyone + * In **users** field, provide an array of User IDs with which you want to share, e.g. "users": ["12343542356","12343542357"]. + * In **hiringTeamOf** field, provide an array of Job IDs, this will share message with a full hiring team of those jobs, e.g. "hiringTeamOf": ["123423432322","123423432324"]. + * **everyone** flag allows sharing with everyone in a company. If not provided, defaults to **false**. + * **openNote** flag allows sharing with everyone in a company that has access to the candidate. If not provided, defaults to **false** + tags: + - messages + summary: >- + Shares new messages on Hireloop with Users, Hiring Teams or Everyone and + sends emails. + operationId: messages.shares.create + security: + - key: [] + - oauth: + - messages_write + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Message' + description: Message to post + /messages/shares/{id}: + delete: + responses: + '204': + description: Message successfully deleted + '403': + description: No permission to delete a message + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Message not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Delete a message with a given id. Deleted message is no longer visible + on Hireloop. + tags: + - messages + summary: Delete a message + operationId: messages.shares.delete + security: + - key: [] + - oauth: + - messages_manage + parameters: + - $ref: '#/components/parameters/MessageId' + /messages: + get: + responses: + '200': + description: Messages successfully fetched + content: + application/json: + schema: + $ref: '#/components/schemas/MessagesView' + headers: + Link: + schema: + type: string + description: > + Links to related resources, in the format defined by + + [RFC 5988](https://tools.ietf.org/html/rfc8288#section-3). + + This will include a link with relation type `next` to the + + next page (containing `pageId` query parameter), if there is a + next page. + '400': + description: > + with codes: + + * **CANDIDATE_NOT_FOUND** when candidate with given id does not + exist + + * **JOB_NOT_FOUND** when job with given id does not exist + + * **APPLICATION_NOT_FOUND** when candidate does not have application + for given job + '403': + description: No permission to access messages + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Search for messages of given candidate. Use jobId parameter to filter + results to messages only for specific job application. Accessible only + for users with ADMINISTRATOR role. + tags: + - messages + summary: Fetch messages + operationId: messages.fetch + security: + - key: [] + - oauth: + - messages_read + parameters: + - $ref: '#/components/parameters/CandidateId' + - $ref: '#/components/parameters/JobId' + - $ref: '#/components/parameters/PageId' + - $ref: '#/components/parameters/Limit' + /candidates/{id}/jobs/{jobId}/offers: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + get: + responses: + '200': + description: Candidate's offers + content: + application/json: + schema: + $ref: '#/components/schemas/Offers' + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: | + with code **NO_ACCESS_TO_OFFERS** when not permitted to see offers + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Offers not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - offers + summary: Get candidate's offers + operationId: candidates.offers.all + security: + - key: [] + - oauth: + - candidates_offers_read + /candidates/{id}/jobs/{jobId}/offers/{offerId}: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + get: + responses: + '200': + description: Candidate's offer + content: + application/json: + schema: + $ref: '#/components/schemas/Offer' + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: | + with code **NO_ACCESS_TO_OFFERS** when not permitted to see offers + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Offer not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - offers + summary: Get candidate's offer + operationId: candidates.offers.get + security: + - key: [] + - oauth: + - candidates_offers_read + parameters: + - in: path + description: Identifier of a Offer + name: offerId + required: true + schema: + type: string + /candidates/{id}/jobs/{jobId}/offers/{offerId}/approvals/latest: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + get: + responses: + '200': + description: Latest approval request for given offer + content: + application/json: + schema: + $ref: '#/components/schemas/ApprovalRequest' + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with code + + * **NO_ACCESS_TO_OFFERS** when not permitted to see offers * + **NO_ACCESS_TO_APPROVALS** when not permitted to access offer + approvals + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + * **OFFERS_NOT_FOUND** + * **APPROVALS_NOT_FOUND** + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - offers + summary: Get latest approval request for candidate's offer + operationId: candidates.offers.approvals.latest + security: + - key: [] + - oauth: + - candidates_offers_read + parameters: + - in: path + description: Identifier of a Offer + name: offerId + required: true + schema: + type: string + /offers: + get: + responses: + '200': + description: Offers matching search criteria. + content: + application/json: + schema: + $ref: '#/components/schemas/Offers' + '403': + description: | + with code **NO_ACCESS_TO_OFFERS** when not permitted to see offers + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + default: + description: List of found offers + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiListResult' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiListResult' + tags: + - offers + summary: Search offers by criteria + operationId: searchOffers + security: + - key: [] + parameters: + - name: limit + in: query + description: >- + number of offers to return. max number of offers returned by single + call is 100 + schema: + type: integer + format: int32 + - name: offset + in: query + description: number of offers to skip while processing result + schema: + type: integer + format: int32 + - name: status + in: query + description: >- + offer status; available values are: INACTIVE, UNDER_REVIEW, ACTIVE, + REJECTED + schema: + type: string + - name: q + in: query + description: >- + full text query. will match offers with name and description + matching query string + schema: + type: string + - name: postingId + in: query + description: >- + id of a job posting; allows getting offer information using Posting + Id coming from Job Board API; not relevant for Assessment vendors + schema: + type: string + description: >- + Enables you to get a list of existing offers. The number of offers + returned as part of the list can be modified using the offset and limit + parameters. These results will be sorted using lastUpdateDate. + deprecated: true + post: + tags: + - offers + summary: Create offer + description: >- + Enables you to insert new offers. This operation requires passing an Offer + object as part of a POST request. + operationId: create + requestBody: + description: >- + Offer + object that needs to be passed over. Please see the Model Schema on + the right. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiOffer' + responses: + default: + description: New offer created + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiOffer' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiOffer' + deprecated: true + security: + - key: [] + /offers/{offerId}/documents: + get: + responses: + '200': + description: List of documents related to sent offer. + content: + application/json: + schema: + $ref: '#/components/schemas/OfferDocumentsList' + '400': + description: Malformed request. ID format is invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Offer not found or lack of access to the offer. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Offer has not been sent to the candidate. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Offer was sent with an unsupported provider. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - offers + summary: Get a list of documents related to sent offer. + operationId: offers.documents.getDocumentsList + security: + - key: [] + - oauth: + - candidates_offers_read + parameters: + - in: path + description: Identifier of an offer. + name: offerId + required: true + schema: + type: string + /offers/{offerId}/documents/{documentId}: + get: + tags: + - offers + summary: Get a given document in a given sent offer + operationId: offers.documents.getDocument + parameters: + - name: offerId + description: Identifier of an offer. + in: path + required: true + schema: + type: string + - name: documentId + description: Identifier of a document. + in: path + required: true + schema: + type: string + responses: + '200': + description: Requested file. + content: + application/octet-stream: + schema: + format: binary + '400': + description: Malformed request. ID format is invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + Forbidden from downloading offer because of detected malware in + document. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Offer or document not found or lack of access. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Offer was not sent to the candidate. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Offer was sent with an unsupported provider. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - key: [] + - oauth: + - candidates_offers_read + /assessments/{assessmentOrderId}/comments/{commentId}: + get: + tags: + - comments + summary: Get comment by id + description: Getting details of a comment in a particular assessment order. + operationId: getComment + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + - name: commentId + in: path + description: unique id of an assessment comment + required: true + schema: + type: string + responses: + default: + description: Assessment comment + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentComment' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentComment' + deprecated: true + security: + - key: [] + /assessments/{assessmentOrderId}/comments: + get: + tags: + - comments + summary: List comments + description: >- + Enables you to get a list of comments associated with a particular + assessment order. + operationId: listComments + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + - name: limit + in: query + description: >- + number of comments to return. max number of comments returned by + single call is 100 + schema: + type: string + - name: offset + in: query + description: number of comments to skip while processing result + schema: + type: string + responses: + default: + description: List of assessment comments + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentCommentListResult' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentCommentListResult' + deprecated: true + security: + - key: [] + post: + tags: + - comments + summary: Add new comment + description: Adding new comment to an assessment order. + operationId: insertComment + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + requestBody: + description: >- + Body object that should contain author information (it's not required + but this will be displayed as author of the message). Message is + required (which will be displayed to SmartRecruiters user). Please see + the Model Schema on the right. + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiCommentRequest' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiCommentRequest' + required: true + responses: + default: + description: New assessment comment added + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentComment' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentComment' + deprecated: true + security: + - key: [] + /assessments/{assessmentOrderId}/results/{resultId}/attachments/{attachmentId}: + get: + tags: + - attachments + summary: Get assessment attachment + description: Enables you to get details of attachments in a particular assessment. + operationId: getAttachment + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + - name: resultId + in: path + description: unique result id + required: true + schema: + type: string + - name: attachmentId + in: path + description: unique id of an attachment + required: true + schema: + type: string + responses: + default: + description: Assessment attachment + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentAttachment' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentAttachment' + deprecated: true + security: + - key: [] + post: + tags: + - attachments + summary: Update assessment attachment + description: >- + Enables you to update ( replace ) files already submitted to assessment + result. + operationId: updateAttachment + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + - name: resultId + in: path + description: unique result id + required: true + schema: + type: string + - name: attachmentId + in: path + description: unique id of an attachment + required: true + schema: + type: string + requestBody: + description: >- + Attachment file - we accept only PDF files with max size: 20 * 1024 * + 1024. + content: + multipart/form-data: + schema: + $ref: '#/components/schemas/ApiAttachment' + required: true + responses: + default: + description: Assessment attachment updated + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentAttachment' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentAttachment' + deprecated: true + security: + - key: [] + /assessments/{assessmentOrderId}/results/{resultId}/attachments: + get: + tags: + - attachments + summary: List assessment results + description: >- + Enables you to get a list of attachments submitted to a particular + assessment result. + operationId: listAttachmentResults + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + - name: resultId + in: path + description: unique result id + required: true + schema: + type: string + - name: limit + in: query + description: number of elements to return. max value is 100 + schema: + type: integer + format: int32 + - name: offset + in: query + description: number of elements to skip while processing result + schema: + type: integer + format: int32 + responses: + default: + description: Assessment attachment list + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentAttachmentListResult' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentAttachmentListResult' + deprecated: true + security: + - key: [] + post: + tags: + - attachments + summary: Attach assessment results + description: Enables you to attach files to and submit a new assessment result. + operationId: insertAttachment + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + - name: resultId + in: path + description: unique result id + required: true + schema: + type: string + requestBody: + description: >- + Attachment file - we accept only PDF files with max size: 20 * 1024 * + 1024. + content: + multipart/form-data: + schema: + $ref: '#/components/schemas/ApiAttachment' + required: true + responses: + default: + description: File attached to assessment result + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentAttachment' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentAttachment' + deprecated: true + security: + - key: [] + /assessments/{assessmentOrderId}/results/{resultId}: + get: + tags: + - results + summary: Get assessment results by id + description: Enables you to get details of a particular assessment result. + operationId: getResult + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + - name: resultId + in: path + description: unique id of an assessment result + required: true + schema: + type: string + responses: + default: + description: Assessment result + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentResult' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentResult' + deprecated: true + security: + - key: [] + /assessments/{assessmentOrderId}/results: + get: + tags: + - results + summary: List assessment results + description: >- + Enables you to get a list of results submitted to a particular + assessment order. + operationId: listResults + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + - name: limit + in: query + description: number of elements to return. max value is 100 + schema: + type: integer + format: int32 + - name: offset + in: query + description: number of elements to skip while processing result + schema: + type: integer + format: int32 + responses: + default: + description: Assessment result list + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentResultListResult' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentResultListResult' + deprecated: true + security: + - key: [] + post: + tags: + - results + summary: Submit assessment results + description: Enables you to submit a new assessment result. + operationId: insertResult + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + requestBody: + description: >- + AssessmentResult + object that should contain author information (it's not required but + this will be displayed as author of the message) and score (which will + be displayed to SmartRecruiters user). Please see the Model Schema on + the right. + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentResult' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentResult' + responses: + default: + description: New assessment result submitted + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentResult' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentResult' + deprecated: true + security: + - key: [] + /assessments/{assessmentOrderId}/accept: + post: + tags: + - assessments + summary: Accept Assessment order + description: Enables you to accept an assessment order. + operationId: acceptAssessmentOrder + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + requestBody: + description: >- + Body object that should contain author information (it's not required + but this will be displayed as author of the message). Message is + required (which will be displayed to SmartRecruiters user). Please see + the Model Schema on the right. + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiCommentRequest' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiCommentRequest' + required: true + responses: + default: + description: Assessment order accepted + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrder' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrder' + deprecated: true + security: + - key: [] + /assessments/{assessmentOrderId}/complete: + post: + tags: + - assessments + summary: Complete Assessment order + description: Enables you to mark the status of an assessment order as COMPLETED. + operationId: completeAssessmentOrder + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + requestBody: + description: >- + Body object that should contain author information (it's not required + but this will be displayed as author of the message). Message is + required (which will be displayed to SmartRecruiters user). Please see + the Model Schema on the right. + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiCommentRequest' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiCommentRequest' + required: true + responses: + default: + description: Assessment order completed + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrder' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrder' + deprecated: true + security: + - key: [] + /assessments/{assessmentOrderId}: + get: + tags: + - assessments + summary: Get Assessment Order by id + description: Get Assessment Order details by ID. + operationId: getAssessmentOrder + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + responses: + default: + description: Assessment order + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrder' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrder' + deprecated: true + security: + - key: [] + /assessments: + get: + tags: + - assessments + summary: Get Assessment orders by criteria + description: Get list of Assessment Orders. + operationId: getAssessments + parameters: + - name: limit + in: query + description: number of elements to return. max value is 100 + schema: + type: integer + format: int32 + - name: offset + in: query + description: number of elements to skip while processing result + schema: + type: integer + format: int32 + - name: status + in: query + description: >- + assessment order status; available values: NEW, IN_PROGRESS, + REJECTED, COMPLETED + schema: + type: string + - name: fromDate + in: query + description: >- + createDate filter. search will return only orders created after + given date. Date format need to comply with ISO8601 format: + yyyy-MM-ddTHH:mm:ss.SSSZZ + schema: + type: string + - name: toDate + in: query + description: >- + createDate filter. search will return only orders created before + given date. Date format need to comply with ISO8601 format: + yyyy-MM-ddTHH:mm:ss.SSSZZ + schema: + type: string + - name: sortBy + in: query + description: 'sorting criteria. Available options: createDate' + schema: + type: string + - name: sortDir + in: query + description: 'sorting direction. Available options: asc, desc' + schema: + type: string + default: asc + - name: candidateUuid + in: query + description: >- + UUID of a candidate. Corresponds to candidate ID used in Customer + API + schema: + type: string + - name: jobUuid + in: query + description: UUID of a job. Corresponds to job ID used in Customer API + schema: + type: string + responses: + default: + description: Assessment order list + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrderListResult' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrderListResult' + deprecated: true + security: + - key: [] + post: + tags: + - assessments + summary: >- + insert new Assessment order - end point for testing only - it will not + create valid assessment order + operationId: insertAssessmentOrder + requestBody: + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrderRequest' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrderRequest' + responses: + default: + description: Assessment order inserted + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrder' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrder' + deprecated: true + security: + - key: [] + /assessments/{assessmentOrderId}/reject: + post: + tags: + - assessments + summary: Reject Assessment order + description: Enables you to reject an assessment order. + operationId: rejectAssessmentOrder + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + requestBody: + description: >- + Body object that should contain author information (it's not required + but this will be displayed as author of the message). Message is + required (which will be displayed to SmartRecruiters user) and should + contain details on why the order has been rejected. Please see the + Model Schema on the right. + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiCommentRequest' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiCommentRequest' + required: true + responses: + default: + description: Assessment order rejected + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrder' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrder' + deprecated: true + security: + - key: [] + /configs: + get: + tags: + - configs + summary: Fetch list of vendor configs + description: Enables you to get all specified configuration entries. + operationId: getConfigs + responses: + default: + description: Configs list + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiConfigListResult' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiConfigListResult' + deprecated: true + security: + - key: [] + post: + tags: + - configs + summary: Add new config + description: >- + Enables you to add a new config to the configs list. This operation + requires passing an instance of the Config + object with the Id and Value fields set. An update is performed if the + ID that you pass already exists. + operationId: addConfig + requestBody: + description: >- + Config + object that needs to contain Id and Value set. Please see the Model + Schema on the right. + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/Config' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Config' + responses: + default: + description: New config added + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/Config' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Config' + deprecated: true + security: + - key: [] + /configs/{configId}: + get: + tags: + - configs + summary: Get config for vendor + description: Enables you to get the config value for a given Id. + operationId: getConfig + parameters: + - name: configId + in: path + description: unique id of a config entry + required: true + schema: + type: string + responses: + default: + description: Config + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/Config' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Config' + deprecated: true + security: + - key: [] + post: + tags: + - configs + summary: Update config + description: >- + Enables you to update config in the configs list. This operation + requires passing a config id and instance of the Config + object with the Id and Value fields set. + operationId: updateConfig + parameters: + - name: configId + in: path + description: unique id of a config entry + required: true + schema: + type: string + requestBody: + description: >- + Config + object that needs to contain Id and Value set. Please see the Model + Schema on the right. + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/Config' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Config' + responses: + default: + description: Config updated + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/Config' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Config' + deprecated: true + security: + - key: [] + /offers/{offerId}: + get: + tags: + - offers + summary: Get offer by id + description: >- + Enables you to get offer details. This operation requires passing an + offer id as part of the REQUEST parameter. + operationId: getOffer + parameters: + - name: offerId + in: path + description: unique id of an offer + required: true + schema: + type: string + responses: + default: + description: Offer + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiOffer' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiOffer' + deprecated: true + security: + - key: [] + post: + tags: + - offers + summary: Update offer + description: >- + Enables you to Update existing offers. This operation requires passing + an offer id being changed and an Offer + object as part of the POST request. + operationId: update + parameters: + - name: offerId + in: path + description: unique id of an offer + required: true + schema: + type: string + requestBody: + description: >- + Offer + object that needs to be passed over. Please see the Model Schema on + the right. Required fields are: id, catalogId, name, description, + Terms. + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiOffer' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiOffer' + responses: + default: + description: Offer updated + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiOffer' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiOffer' + deprecated: true + security: + - key: [] + /offers/{offerId}/submit: + post: + tags: + - offers + summary: Submit offer + description: >- + Enables you to submit an offer for review. This operation requires + passing an offer ID as part of the REQUEST parameter. + operationId: submit + parameters: + - name: offerId + in: path + description: unique id of an offer + required: true + schema: + type: string + responses: + default: + description: Offer submitted for review + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiOffer' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiOffer' + deprecated: true + security: + - key: [] + /offers/{offerId}/withdraw: + post: + tags: + - offers + summary: Withdraw offer + description: >- + Enables you to withdrawing an offer from the marketplace. This operation + requires passing an offer id as part of a REQUEST parameter. After a + successful withdraw, the offer is not available in the marketplace + anymore. + operationId: withdraw + parameters: + - name: offerId + in: path + description: unique id of an offer + required: true + schema: + type: string + responses: + default: + description: Offer withdrawn + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiOffer' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiOffer' + deprecated: true + security: + - key: [] + /v1/companies/{companyIdentifier}/postings: + get: + responses: + '200': + description: OK + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/PostingList' + description: Lists active postings published by given company. Return PostingList + tags: + - postings + summary: Lists active postings published by given company + operationId: v1.listPostings + security: + - {} + - key: [] + parameters: + - in: header + description: Language of translation + name: accept-language + schema: + $ref: '#/components/schemas/JobAdLanguageCode' + - in: path + description: Identifier of a company + name: companyIdentifier + required: true + schema: + type: string + - in: query + description: full-text search query based on a job title, location + name: q + required: false + schema: + type: string + - in: query + description: number of elements to return. max value is 100 + name: limit + required: false + schema: + type: integer + - in: query + description: number of elements to skip while processing result + name: offset + required: false + schema: + type: integer + - in: query + description: > + Filter indicating which postings to return: + + * **PUBLIC**: response will include ONLY public postings + + * **INTERNAL**: response will include ONLY internal postings + + * **INTERNAL_OR_PUBLIC**: response will include internal postings or + public postings, but not both for a single job. If a job has both + types of postings, only internal postings will be returned. NOTE: + when selected, all postings, internal and public, will be treated as + internal. Among other things, this means that screening questions + will not be displayed, and candidates will be marked with the + EMPLOYEE label. + name: destination + required: false + schema: + type: string + enum: + - PUBLIC + - INTERNAL + - INTERNAL_OR_PUBLIC + - in: query + description: > + Filter indicating which postings to return: + + * **REMOTE**: response will include ONLY postings with remote + location type + + * **ONSITE**: response will include ONLY postings with onsite + location type + + * **ANY**: response will include ANY location type + name: locationType + required: false + schema: + type: string + enum: + - REMOTE + - ONSITE + - ANY + - in: query + description: country code filter (part of the location object) + name: country + required: false + schema: + type: string + - in: query + description: region filter (part of the location object) + name: region + required: false + schema: + type: string + - in: query + description: city filter (part of the location object) + name: city + required: false + schema: + type: string + - in: query + description: department filter (department id) + name: department + required: false + schema: + type: string + - in: query + description: > + Job ad language; accepts 2-letter ISO 639-1 language code; multiple + codes can be provided, separated by comma (",") + + Exceptions to the language code ISO format: + + * "en-GB" - "English - English (UK)" + + * "fr-CA" - "French - français (Canada)" + + * "pt-BR" - "Portugal - português (Brasil)" + + * "pt-PT" - "Portugal - português (Portugal)" + + * "zh-TW" - "Chinese (Traditional) - 中文 (香港)" + + * "zh-CN" - "Chinese (Simplified) - 中文 (简体)" + name: language + required: false + schema: + type: array + items: + $ref: '#/components/schemas/JobAdLanguageCode' + - in: query + description: | + Released after filter (ISO8601-formatted) + Format: yyyy-MM-ddTHH:mm:ss.SSSZZ + name: releasedAfter + required: false + schema: + type: string + format: date-time + - in: query + description: > + Filters postings by custom fields. Multiple custom field values can + be provided, separated by comma (","). + + Format: + custom_field.CUSTOM_FIELD_ID=CUSTOM_FIELD_VALUE1_ID,CUSTOM_FIELD_VALUE2_ID + name: customField + required: false + style: form + schema: + type: object + propertyNames: + pattern: ^custom_field\.[^\s]+$ + additionalProperties: + type: string + pattern: ^[^\s]+$ + examples: + - custom_field.52d95747e4b0ba7acb9217ea: 23aba1d4-4c81-48f7-9ae2-3ab84ee32a80 + /v1/companies/{companyIdentifier}/postings/{postingId}: + get: + responses: + '200': + description: OK + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/Posting' + description: >- + Note: In order to update content of a job posting available via the + Posting API, you need to re-post the job in SmartRecruiters application. + tags: + - postings + summary: Get posting by posting id or uuid for given company + operationId: v1.getPosting + security: + - {} + - key: [] + parameters: + - in: header + description: Language of translation + name: accept-language + schema: + $ref: '#/components/schemas/JobAdLanguageCode' + - in: path + description: Identifier of a company + name: companyIdentifier + required: true + schema: + type: string + - in: path + description: Posting identifier or uuid + name: postingId + required: true + schema: + type: string + - in: query + description: >- + sourceTypeId can be retrieved using [get + /configuration/sources](https://developers.smartrecruiters.com/reference/configurationsourcetypes-1) + endpoint. Used together with **sourceId** and **sourceSubTypeId** to + add source tracking parameter to **applyUrl**. + name: sourceTypeId + required: false + schema: + type: string + - in: query + description: >- + sourceSubTypeId can be retrieved using [get + /configuration/sources](https://developers.smartrecruiters.com/reference/configurationsourcetypes-1) + endpoint. Used together with **sourceId** and **sourceTypeId** to + add source tracking parameter to **applyUrl**. + name: sourceSubTypeId + required: false + schema: + type: string + - in: query + description: >- + sourceId can be retrieved using [get + /configuration/sources/{sourceType}/values](https://developers.smartrecruiters.com/reference/configurationsourcevaluesall-1) + endpoint. Used together with **sourceTypeId** and + **sourceSubTypeId** to add source tracking parameter to + **applyUrl**. + name: sourceId + required: false + schema: + type: string + /v1/companies/{companyIdentifier}/departments: + get: + responses: + '200': + description: OK + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/Departments' + description: List departments for given company. + tags: + - postings + summary: List departments for given company + operationId: v1.listDepartments + security: + - {} + - key: [] + parameters: + - in: header + description: Language of translation + name: accept-language + schema: + $ref: '#/components/schemas/JobAdLanguageCode' + - in: path + description: Identifier of a company + name: companyIdentifier + required: true + schema: + type: string + /files/{reportFileId}/data: + get: + tags: + - files + summary: Download report file + description: > + Use this endpoint to download a specific report file. The response + contains report data in CSV format. + + ### Note + + It is not recommended to attempt downloading large report files via Live + Docs or Internet Browser. To get a large report file, use command line + tools or native HTTP clients. + operationId: downloadReportFile + parameters: + - name: reportFileId + in: path + description: Report file identifier + required: true + schema: + type: string + responses: + '200': + description: Successful response. + content: + text/csv: + schema: + type: string + '401': + description: Returned when a request was not authenticated. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Returned when a caller is not authorized to perform the request. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Returned when there is no report file with the given ID. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - key: [] + - oauth: + - reporting_read + /files/{reportFileId}: + get: + tags: + - files + summary: Get report file + description: Use this endpoint to get a specific report file details. + operationId: getReportFile + parameters: + - name: reportFileId + in: path + description: Report file identifier + required: true + schema: + type: string + responses: + '200': + description: Successful response. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiReportFileResponse' + '401': + description: Returned when a request was not authenticated. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Returned when a caller is not authorized to perform the request. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Returned when there is no report file with the given ID. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - key: [] + - oauth: + - reporting_read + /reports/{reportId}/files/recent/data: + get: + tags: + - reports + summary: Download most recent report file + description: > + Use this endpoint to download the most recent report file for a specific + report. The response contains report data in CSV format. In order to get + a successful response, there have to be at least 1 successfully + generated report file for the report. + + ### Etags + + Along with the successful response, the `Etag` HTTP header is returned, + containing ETag identifier of the report file. In order to save + bandwidth resources, the `If-None-Match HTTP` header containing the + recently retrieved report file ETag can be passed with the request. If + there's no report file, that is newer than the one referred in the + `If-None-Match` header, the API responds with HTTP `304 Not Modified` + status code and does not provide content. + + ### Note + + It is not recommended to attempt downloading large report files via Live + Docs or Internet Browser. To get a large report file, use command line + tools or native HTTP clients. + operationId: downloadMostRecentReportFile + parameters: + - name: If-None-Match + in: header + description: Report file ETag to be compared with the most recent report file + schema: + type: string + - name: reportId + in: path + description: Report identifier + required: true + schema: + type: string + responses: + '200': + description: Successful response. + headers: + ETag: + description: Report file ETag + style: simple + schema: + type: string + content: + text/csv: + schema: + type: string + '304': + description: Returned when there's no newer report file available. + '400': + description: Returned when the report ID is invalid. + content: + text/csv;charset=utf-8: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Returned when a request was not authenticated. + content: + text/csv;charset=utf-8: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + Returned when a caller is not authorized to download the report + file. + content: + text/csv;charset=utf-8: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Returned when there is no successfully generated report file. + content: + text/csv;charset=utf-8: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - key: [] + - oauth: + - reporting_read + /reports/{reportId}/files: + get: + tags: + - reports + summary: Get report files + description: > + Use this endpoint to fetch a list of report files of a specific report. + Report files are sorted by generation date (newer report files first). + + ### Paging + + Whenever there's more data to be returned, the `nextPage` property will + contain an opaque identifier of the next page. The value can be then + passed as a page query parameter in a subsequent request. Another option + is to use the response's `Link` HTTP header, which contains a web link + to the following page, example: + + ``` + + ; + rel="link" + + ``` + operationId: getReportFiles + parameters: + - name: page + in: query + description: Opaque page identifier to be returned. + schema: + type: string + - name: limit + in: query + description: Number of entities that should be returned per page. + schema: + maximum: 1000 + minimum: 1 + type: integer + format: int32 + default: 10 + - name: reportId + in: path + description: Report identifier + required: true + schema: + type: string + responses: + '200': + description: Successful response. + headers: + Link: + description: Link to the next report files page, if available + style: simple + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/ApiReportFilesResponse' + '400': + description: >- + Returned when the report ID, page parameter or limit parameter is + invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Returned when a request was not authenticated. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Returned when a caller is not authorized to perform the request. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Returned when there is no report with the given ID. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - key: [] + - oauth: + - reporting_read + post: + tags: + - reports + summary: Generate ad-hoc report + description: >- + Use this endpoint to generate ad-hoc report. + + NOTE: Report files are generated asynchronously. Ensure the report file + status is: COMPLETED before fetching the data. To check the report file + status use the GET /reports/{reportId}/files/recent endpoint. + operationId: generateAdHocReport + parameters: + - name: reportId + in: path + description: Report identifier + required: true + schema: + type: string + responses: + '200': + description: Successful response. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiReportFileResponse' + '400': + description: >- + Returned when the report ID or the identity is invalid or the report + is already pending generation. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Returned when a request was not authenticated. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Returned when a caller is not authorized to perform the request. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Returned when there is no report with the given ID. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Returned when the report was modified concurrently. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - key: [] + - oauth: + - reporting_write + /reports/{reportId}/files/recent: + get: + tags: + - reports + summary: Get most recent report file + description: > + Use this endpoint to get the most recent report file details for a + specific report. In order to get a successful response, there have to be + at least 1 successfully generated report file for the report. + + ### Etags + + Along with the successful response, the `Etag` HTTP header is returned, + containing ETag identifier of the report file. In order to save + bandwidth resources, the `If-None-Match HTTP` header containing the + recently retrieved report file ETag can be passed with the request. If + there's no report file, that is newer than the one referred in the + `If-None-Match` header, the API responds with HTTP `304 Not Modified` + status code and does not provide content. + operationId: getMostRecentReportFile + parameters: + - name: If-None-Match + in: header + description: Report file ETag to be compared with the most recent report file + schema: + type: string + - name: reportId + in: path + description: Report identifier + required: true + schema: + type: string + responses: + '200': + description: Successful response. + headers: + ETag: + description: Report file ETag + style: simple + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/ApiReportFileResponse' + '304': + description: Returned when there's no newer report file available. + '400': + description: Returned when the report ID is invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Returned when a request was not authenticated. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Returned when a caller is not authorized to perform the request. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Returned when there is no successfully generated report file. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - key: [] + - oauth: + - reporting_read + /reports/{reportId}: + get: + tags: + - reports + summary: Get report + description: Use this endpoint to get a specific report details. + operationId: getReport + parameters: + - name: reportId + in: path + description: Report identifier + required: true + schema: + type: string + responses: + '200': + description: Successful response. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiReportResponse' + '400': + description: Returned when the report ID is invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Returned when a request was not authenticated. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Returned when a caller is not authorized to perform the request. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Returned when there is no report with the given ID. + security: + - key: [] + - oauth: + - reporting_read + /reports: + get: + tags: + - reports + summary: Get reports + description: > + Use this endpoint to fetch a list of reports. Reports are sorted by + modification date (newer reports first). + + ### Paging + + Whenever there's more data to be returned, the `nextPage` property will + contain an opaque identifier of the next page. The value can be then + passed as a page query parameter in a subsequent request. Another option + is to use the response's `Link` HTTP header, which contains a web link + to the following page, example: + + ``` + + ; + rel="link" + + ``` + operationId: getReports + parameters: + - name: page + in: query + description: Opaque page identifier to be returned. + schema: + type: string + - name: limit + in: query + description: Number of entities that should be returned per page. + schema: + maximum: 1000 + minimum: 1 + type: integer + format: int32 + default: 10 + responses: + '200': + description: Successful response. + headers: + Link: + description: Link to the next reports page, if available + style: simple + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/ApiReportsResponse' + '400': + description: Returned when the page parameter or limit parameter is invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Returned when a request was not authenticated. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Returned when a caller is not authorized to perform the request. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - key: [] + - oauth: + - reporting_read + /reviews: + get: + responses: + '200': + description: Review was retreived + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Review' + '401': + description: > + with codes: + + * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is not + authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + With code **'APPLICATION_NOT_FOUND'** when there is no application + of the candidate in a the job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - reviews + parameters: + - in: query + name: candidateId + description: ID of the candidate + required: true + schema: + $ref: '#/components/schemas/Uuid' + - in: query + name: jobId + description: ID of the job + required: true + schema: + $ref: '#/components/schemas/Uuid' + summary: Retrieves all reviews for specified candidate and job + operationId: reviews.getList + security: + - key: [] + - oauth: + - reviews_read + post: + responses: + '201': + description: Review was created + content: + application/json: + schema: + $ref: '#/components/schemas/Review' + '401': + description: > + with codes: + + * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is not + authorized to access resource + + * **REVIEWER_NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when reviewer is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden to create a review + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + When input validation fails or with codes: + + * **INVALID_OVERALL** when invalid overall + + * **NON_EXISTING_REVIEWER** when reviewer does not exist + + * **INACTIVE_OR_DELETED_REVIEWER** when reviewer is inactive or + deleted + + * **CANDIDATE_NOT_FOUND** when candidate with given id not found + + * **JOB_NOT_FOUND** when job with given id not found + + * **APPLICATION_NOT_FOUND** when application for given candidate id + and job id not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - reviews + summary: Creates a review + operationId: reviews.create + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ReviewInput' + description: Review to be created + required: true + security: + - key: [] + - oauth: + - reviews_write + /reviews/{reviewId}: + parameters: + - $ref: '#/components/parameters/ReviewId' + get: + responses: + '200': + description: Review was retreived + content: + application/json: + schema: + $ref: '#/components/schemas/Review' + '400': + description: | + with codes: + * **INVALID_REVIEW_ID** when review id is invalid + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: > + with codes: + + * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is not + authorized to access resource + + * **REVIEWER_NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when reviewer is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden to retreive a review + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **REVIEW_NOT_FOUND** when no review with given id is found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - reviews + summary: Retrieves a review + operationId: reviews.get + security: + - key: [] + - oauth: + - reviews_read + patch: + responses: + '204': + description: Review was updated + '400': + description: | + with codes: + * **INVALID_SOURCE** when review source is invalid + * **INVALID_REVIEW_ID** when review id is invalid + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: > + with codes: + + * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is not + authorized to access resource + + * **REVIEWER_NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when reviewer is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden to retreive a review + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **REVIEW_NOT_FOUND** when no review with given id is found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + When input validation fails or with codes: + + * **INVALID_OVERALL** when invalid overall + + * **NON_EXISTING_REVIEWER** when reviewer does not exist + + * **INACTIVE_OR_DELETED_REVIEWER** when reviewer is inactive or + deleted + + * **REVIEWER_ID_DOES_NOT_MATCH** when reviewer id does not match + reviewer id in review + '500': + $ref: '#/components/responses/ServerError' + tags: + - reviews + summary: Updates a review + operationId: reviews.update + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ReviewToUpdateInput' + description: Review to be updated + required: true + security: + - key: [] + - oauth: + - reviews_write + delete: + parameters: + - $ref: '#/components/parameters/ReviewerId' + responses: + '204': + description: Review was deleted + '400': + description: | + with codes: + * **INVALID_SOURCE** when review source is invalid + * **INVALID_REVIEW_ID** when review id is invalid + * **INVALID_REVIEWER_ID** when review id or employee id is invalid + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: > + with codes: + + * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is not + authorized to access resource + + * **REVIEWER_NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when reviewer is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden to retreive a review + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **REVIEW_NOT_FOUND** when no review with given id is found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + When input validation fails or with codes: + + * **NON_EXISTING_REVIEWER** when reviewer does not exist + + * **INACTIVE_OR_DELETED_REVIEWER** when reviewer is inactive or + deleted + + * **REVIEWER_ID_DOES_NOT_MATCH** when reviewer id does not match + reviewer id in review + '500': + $ref: '#/components/responses/ServerError' + tags: + - reviews + summary: Deletes a review + operationId: reviews.delete + security: + - key: [] + - oauth: + - reviews_write + /new-hires/{newHireId}: + parameters: + - $ref: '#/components/parameters/NewHireId' + get: + responses: + '200': + description: New Hire details were retrieved + content: + application/json: + schema: + $ref: '#/components/schemas/NewHire' + '401': + description: > + With codes: * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + With codes: + + * **'NEW_HIRE_NOT_FOUND'** when there is no New Hire present for + given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - new-hires + summary: Returns details for a single New Hire + operationId: new-hires.get + security: + - key: [] + - oauth: + - new_hires_read + /onboarding-processes/{onboardingProcessId}: + parameters: + - $ref: '#/components/parameters/OnboardingProcessId' + get: + responses: + '200': + description: Onboarding Process details were retrieved + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardingProcess' + '401': + description: > + With codes: * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + With codes: + + * **'ONBOARDING_PROCESS_NOT_FOUND'** when there is no Onboarding + Process for given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - onboarding-processes + summary: Returns details of a single Onboarding Process + operationId: onboarding-processes.get + security: + - key: [] + - oauth: + - onboarding_processes_read + /web-form-assignments/{webFormAssignmentId}/form-answers: + parameters: + - $ref: '#/components/parameters/WebFormAssignmentId' + get: + responses: + '200': + description: Answers submitted for Web Form Assignment were retrieved + content: + application/json: + schema: + $ref: '#/components/schemas/WebFormAnswers' + '401': + description: > + With codes: * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + With codes: + + * **'WEB_FORM_ASSIGNMENT_NOT_FOUND'** when there is no Web Form + Assignment for given id + + * **'WEB_FORM_ASSIGNMENT_ANSWERS_NOT_FOUND'** when there are no Web + Form Assignment Answers for given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - assignments-submissions + summary: Returns answers submitted for a single Web Form Assignment + operationId: web-form-assignments.form-answers.get + security: + - key: [] + - oauth: + - assignments_submissions_read + /web-form-assignments/{webFormAssignmentId}/fields-metadata: + parameters: + - $ref: '#/components/parameters/WebFormAssignmentId' + get: + responses: + '200': + description: >- + The metadata of the fields that belong to a single Web Form + Assignment was retrieved + content: + application/json: + schema: + $ref: '#/components/schemas/WebFormFieldsMetadata' + '401': + description: > + With codes: * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + With codes: + + * **'WEB_FORM_ASSIGNMENT_NOT_FOUND'** when there is no Web Form + Assignment for given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - assignments-submissions + summary: >- + Returns metadata for the fields that belong to a single Web Form + Assignment + operationId: web-form-assignments.fields-metadata.get + security: + - key: [] + - oauth: + - assignments_submissions_read + /fillable-pdf-form-assignments/{fillablePdfFormAssignmentId}/form-answers: + parameters: + - $ref: '#/components/parameters/FillablePdfFormAssignmentId' + get: + responses: + '200': + description: >- + PDF file filled with submitted answers Fillable PDF Form Assignment + was retrieved + content: + application/pdf: + schema: + type: string + format: binary + '401': + description: > + With codes: * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + With codes: + + * **'FILLABLE_PDF_FORM_ASSIGNMENT_NOT_FOUND'** when there is no + Filalble PDF Form Assignment for given id + + * **'FILLABLE_PDF_FORM_ASSIGNMENT_ANSWERS_NOT_FOUND'** when there + are no Filalble PDF Form Assignment Answers for given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - assignments-submissions + summary: Returns answers submitted for a single Fillable PDF Form Assignment + operationId: fillable-pdf-form-assignments.form-answers.get + security: + - key: [] + - oauth: + - assignments_submissions_read + /onboarding-processes/{onboardingProcessId}/assignments: + parameters: + - $ref: '#/components/parameters/OnboardingProcessId' + get: + responses: + '200': + description: >- + Assignments associated with the given Onboarding Process were + returned + content: + application/json: + schema: + $ref: '#/components/schemas/Assignments' + '401': + description: > + With codes: * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + With codes: + + * **'ONBOARDING_PROCESS_NOT_FOUND'** when there is no Onboarding + Process for given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - assignments + summary: Returns Assignments associated with a single Onboarding Process + operationId: onboarding-processes.assignments.get + security: + - key: [] + - oauth: + - assignments_read + /activity-assignments/{activityAssignmentId}/attachments: + parameters: + - $ref: '#/components/parameters/ActivityAssignmentId' + get: + responses: + '200': + description: >- + Attachments submitted for the given Activity Assignment were + returned + content: + application/json: + schema: + $ref: '#/components/schemas/ActivityAssignmentAttachments' + '401': + description: > + With codes: * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + With codes: + + * **'ACTIVITY_ASSIGNMENT_NOT_FOUND'** when there is no Activity + Assignment for given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - assignments-submissions + summary: Returns list of Attachments submitted for a single Activity Assignment + operationId: activity-assignments.attachments.get + security: + - key: [] + - oauth: + - assignments_submissions_read + /activity-assignments/{activityAssignmentId}/attachments/{attachmentId}: + parameters: + - $ref: '#/components/parameters/ActivityAssignmentId' + - $ref: '#/components/parameters/AttachmentId' + get: + responses: + '200': + description: >- + Single Attachment submitted for the given Activity Assignment was + retrieved + content: + application/octet-stream: + schema: + type: string + format: binary + '401': + description: > + With codes: * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + With codes: + + * **'ACTIVITY_ASSIGNMENT_NOT_FOUND'** when there is no Activity + Assignment for given id + + * **'ATTACHMENT_NOT_FOUND'** when there is no Attachment for given + id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - assignments-submissions + summary: Returns single Attachment for specific Activity Assignment + operationId: activity-assignments.attachments.getById + security: + - key: [] + - oauth: + - assignments_submissions_read + /users: + get: + responses: + '200': + description: List of users in your company + content: + application/json: + schema: + $ref: '#/components/schemas/Users' + '400': + description: | + with codes + * **INVALID_PAGE_ID** when pageId is not a correct value + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: | + with code * **PERMISSION_DENIED** Not permitted to manage users + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - users + summary: List users of your company + operationId: users.all + security: + - key: [] + - oauth: + - users_read + parameters: + - in: query + description: full-text search query based on firstName, lastName, email + name: q + schema: + type: string + minLength: 3 + - in: query + description: number of elements to return. max value is 100 + name: limit + schema: + type: integer + minimum: 1 + maximum: 100 + default: 100 + - in: query + description: number of elements to skip while processing result + name: offset + schema: + type: integer + minimum: 0 + default: 0 + - in: query + description: >- + ISO8601-formatted time boundaries for the user update time, Format: + yyyy-MM-ddTHH:mm:ss.SSSZZ + name: updatedAfter + schema: + type: string + format: date-time + deprecated: true + post: + responses: + '201': + description: Created user + content: + application/json: + schema: + $ref: '#/components/schemas/UserEntity' + '400': + description: > + with codes + + * **LANGUAGE_DISABLED** User language is not available as part of + company subscription plan + + * **INVALID_USER_NAME** when firstName or lastName contains invalid + characters (e.g. leading or trailing spaces) + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: | + with code * **PERMISSION_DENIED** Not permitted to access users + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: User already exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + $ref: '#/components/responses/SemanticError' + tags: + - users + summary: Create a new user + operationId: users.create + security: + - key: [] + - oauth: + - users_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/NewUser' + description: User object to be created + deprecated: true + /users/me: + get: + responses: + '200': + description: My user details + content: + application/json: + schema: + $ref: '#/components/schemas/UserEntity' + tags: + - users + summary: Get details of my user + operationId: users.me + security: + - key: [] + - oauth: + - users_read + deprecated: true + /users/{id}: + parameters: + - $ref: '#/components/parameters/userId' + get: + responses: + '200': + description: User details + content: + application/json: + schema: + $ref: '#/components/schemas/UserEntity' + '403': + description: | + with code * **PERMISSION_DENIED** Not permitted to manage users + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: User not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - users + summary: Get details of a user with given id + operationId: users.get + security: + - key: [] + - oauth: + - users_read + deprecated: true + patch: + responses: + '200': + description: Updated user + content: + application/json: + schema: + $ref: '#/components/schemas/UserEntity' + '400': + description: > + with codes + + * **LANGUAGE_DISABLED** Updated language is not available as part of + company subscription plan + + * **INVALID_LOCATION** when one of location properties contains + invalid characters + + * **INVALID_USER_NAME** when firstName or lastName contains invalid + characters (e.g. leading or trailing spaces) + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: | + with code * **PERMISSION_DENIED** Not permitted to access users + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: User not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: > + with codes + + * **RESOURCE_ALREADY_EXIST** when user already exists + + * **SSO_IDENTIFIER_ALREADY_EXISTS** when user with given + ssoIdentifier already exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - users + summary: Update a user + operationId: users.update + security: + - key: [] + - oauth: + - users_manage + requestBody: + $ref: '#/components/requestBodies/JSONPatch' + deprecated: true + delete: + deprecated: true + responses: + '204': + description: User successfully deactivated + '403': + description: | + with code * **PERMISSION_DENIED** Not permitted to manage users + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: User not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Deactivates a User with given Id. Please use `DELETE + /users/{id}/activation` instead. + tags: + - users + summary: Deactivate a user + operationId: users.activation.delete + security: + - key: [] + - oauth: + - users_manage + /users/{id}/reset-password: + parameters: + - $ref: '#/components/parameters/userId' + post: + responses: + '204': + description: The password reset email successfully sent + '400': + description: > + with codes + + * **USER_DISABLED** when user is disabled + + * **USER_LOCKED** when user is locked (after login/password + failures) + + * **USER_EMAIL_INVALID** when user email is invalid + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with codes + + * **PASSWORD_AUTHENTICATION_DISABLED** when user cannot use + login/password authentication + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: User not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Send password recovery instruction to the email address associated with + a user with a given id. The password will not be reset until the user + with a given id creates a new password. + tags: + - users + summary: Send a password reset email to a user + operationId: users.password.reset + security: + - key: [] + - oauth: + - users_manage + /users/{id}/activation-email: + parameters: + - $ref: '#/components/parameters/userId' + post: + responses: + '204': + description: Activation email successfully sent + '403': + description: | + with code * **PERMISSION_DENIED** Not permitted to manage users + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: User not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + with codes + + * **ACTIVATION_EMAIL_UNAVAILABLE** when user is already activated or + deactivated. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Send an activation email to a user with given id. Users created via an + API are not active. + + This method is an alternative to activating a user directly and allows + sending an activation email + + in which a user will have to open a link and follow instructions on a + screen to activate his/her account. + tags: + - users + summary: Send an activation email to a user + operationId: users.activation.email.send + security: + - key: [] + - oauth: + - users_manage + deprecated: true + /users/{id}/activation: + parameters: + - $ref: '#/components/parameters/userId' + put: + responses: + '204': + description: User successfully activated + '400': + description: | + with codes + * **PROPERTY_INVALID** when user's property is invalid, e.g. email + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: | + with code * **PERMISSION_DENIED** Not permitted to manage users + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: User not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: > + When activating a previously deactivated user, whilst there is an + active user with the same email. + + There could not be more than one activated user with the same email + in the same time. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Activate a user with given id. Users created via an API are not active. + + This method allows activating a user so he/she can sign in straight + away. + tags: + - users + summary: Activate a user + operationId: users.activation.activate + security: + - key: [] + - oauth: + - users_manage + deprecated: true + delete: + responses: + '204': + description: User successfully deactivated + '403': + description: | + with code + * **PERMISSION_DENIED** when user is not permitted to manage users + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: User not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - users + summary: Deactivate a user + operationId: users.activation.deactivate + security: + - key: [] + - oauth: + - users_manage + deprecated: true + /users/{id}/avatar: + parameters: + - $ref: '#/components/parameters/userId' + put: + responses: + '204': + description: Avatar successfully updated + '400': + description: > + with codes + + * **UNMARSHALLING_ERROR** when request cannot be unmarshalled. + This might be usually caused by missing: + - `boundary` parameter in HTTP Request `Content-Type` header + - `boundary` between parts + - `Content-Disposition` header in at least one part + - `name` parameter in at least one `Content-Disposition` header. + Please check reference: https://tools.ietf.org/html/rfc7578#section-4 + + * **MISSING_FILE_PART** when missing part with name `file` (`file` + is case sensitive) + + * **MISSING_FILE_NAME** when `filename` is not available in `file` + part + + * **MISSING_MEDIA_TYPE** when media type in `Content-Type` header is + not available in `file` part + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: | + with code * **PERMISSION_DENIED** Not permitted to manage users + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: User not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - users + summary: Update user avatar + operationId: users.avatar.update + security: + - key: [] + - oauth: + - users_manage + requestBody: + content: + multipart/form-data: + schema: + type: object + properties: + file: + description: The file to upload. + type: string + format: binary + required: + - file + deprecated: true + /system-roles: + get: + responses: + '200': + description: List of system roles + content: + application/json: + schema: + $ref: '#/components/schemas/SystemRoles' + '403': + description: | + with code * **PERMISSION_DENIED** Not permitted to manage users + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + summary: List system roles + operationId: system-roles.all + security: + - key: [] + - oauth: + - users_read + tags: + - users + /access-groups: + get: + responses: + '200': + description: List of access groups + content: + application/json: + schema: + $ref: '#/components/schemas/AccessGroups' + '403': + description: > + with code * **PERMISSION_DENIED** Not permitted to manage access + groups + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + summary: List access groups configured in your company + operationId: access-groups.all + externalDocs: + url: >- + https://help.smartrecruiters.com/Company_settings/User_Management/Access_Groups + security: + - key: [] + - oauth: + - users_read + tags: + - users + /access-groups/{accessGroupId}/users/{id}: + parameters: + - $ref: '#/components/parameters/accessGroupId' + - $ref: '#/components/parameters/userId' + delete: + responses: + '204': + description: User successfully removed from access group + '403': + description: > + with code * **PERMISSION_DENIED** Not permitted to manage access + groups + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes + + * **USER_NOT_FOUND** when user with given id doesn't exist + + * **USER_NOT_IN_ACCESS_GROUP** when user is not member of access + group + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + summary: Remove user from access group + operationId: access-groups.users.remove + security: + - key: [] + - oauth: + - users_manage + tags: + - users + /access-groups/{accessGroupId}/users: + parameters: + - $ref: '#/components/parameters/accessGroupId' + post: + responses: + '201': + description: Users successfully added to access group + content: + application/json: + schema: + $ref: '#/components/schemas/AccessGroups' + '400': + description: > + Cannot assigned user to access group with codes + + * **ACCESS_GROUP_NOT_ALLOWED_FOR_USER** when access groups are not + allowed for user + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with code * **PERMISSION_DENIED** Not permitted to manage access + groups + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + User or access group not found with codes + + * **USER_NOT_FOUND** when user with given id doesn't exist + + * **ACCESS_GROUP_NOT_FOUND** when access group with given id + doesn't exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + summary: Assign users to access group + operationId: access-groups.users.assign + security: + - key: [] + - oauth: + - users_manage + tags: + - users + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserIds' + /subscriptions: + post: + summary: Subscribe to a webhook. + description: > + Please be aware that before any event is delivered each subscription + needs to be activated. + + + See [subscription activation](subscriptionsactivate-1). + + + We do limit number of subscriptions each subscriber can register. It + means that: + + + * individual user can register up to 20 subscriptions + + * OAuth application can register up to 20 subscriptions on behalf of a + single user + + + Alerting email address and callback authentication properties are + optional. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SubscriptionRequest' + responses: + '201': + description: Webhook subscription created. + content: + application/json: + schema: + $ref: '#/components/schemas/Subscription' + '400': + description: Invalid request query parameters. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + With codes: + + * **NO_PERMISSION_TO_MANAGE_WEBHOOKS** when no permission to manage + webhook subscriptions + + * **SUBSCRIPTIONS_LIMIT_EXCEEDED** when subscription limit for + subscriber is exceeded + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: >- + Incorrect subscription data. Provided callback URL is invalid or + event name is not found. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + callbacks: + onJobCreated: + $ref: '#/components/callbacks/onJobCreated' + onJobUpdated: + $ref: '#/components/callbacks/onJobUpdated' + onJobStatusUpdated: + $ref: '#/components/callbacks/onJobStatusUpdated' + onJobHiringTeamUpdated: + $ref: '#/components/callbacks/onJobHiringTeamUpdated' + onJobAdCreated: + $ref: '#/components/callbacks/onJobAdCreated' + onJobAdUpdated: + $ref: '#/components/callbacks/onJobAdUpdated' + onJobAdPostingsUpdated: + $ref: '#/components/callbacks/onJobAdPostingsUpdated' + onPositionCreated: + $ref: '#/components/callbacks/onPositionCreated' + onPositionUpdated: + $ref: '#/components/callbacks/onPositionUpdated' + onPositionDeleted: + $ref: '#/components/callbacks/onPositionDeleted' + onApplicationCreated: + $ref: '#/components/callbacks/onApplicationCreated' + onApplicationStatusUpdated: + $ref: '#/components/callbacks/onApplicationStatusUpdated' + onApplicationFieldsUpdated: + $ref: '#/components/callbacks/onApplicationFieldsUpdated' + onApplicationOnboardingStatusUpdated: + $ref: '#/components/callbacks/onApplicationOnboardingStatusUpdated' + onApplicationAttachmentCreated: + $ref: '#/components/callbacks/onApplicationAttachmentCreated' + onApplicationSourceUpdated: + $ref: '#/components/callbacks/onApplicationSourceUpdated' + onCandidateCreated: + $ref: '#/components/callbacks/onCandidateCreated' + onCandidateUpdated: + $ref: '#/components/callbacks/onCandidateUpdated' + onCandidateDeleted: + $ref: '#/components/callbacks/onCandidateDeleted' + onOfferCreated: + $ref: '#/components/callbacks/onOfferCreated' + onOfferUpdated: + $ref: '#/components/callbacks/onOfferUpdated' + onOfferApprovalCreated: + $ref: '#/components/callbacks/onOfferApprovalCreated' + onOfferApprovalApproved: + $ref: '#/components/callbacks/onOfferApprovalApproved' + onOfferApprovalRejected: + $ref: '#/components/callbacks/onOfferApprovalRejected' + onOfferApprovalAbandoned: + $ref: '#/components/callbacks/onOfferApprovalAbandoned' + onOfferApprovalStepApproved: + $ref: '#/components/callbacks/onOfferApprovalStepApproved' + onOfferApprovalStepRejected: + $ref: '#/components/callbacks/onOfferApprovalStepRejected' + onOfferApproverSkipped: + $ref: '#/components/callbacks/onOfferApproverSkipped' + onOfferApproverDelegated: + $ref: '#/components/callbacks/onOfferApproverDelegated' + onOfferApprovalCommentCreated: + $ref: '#/components/callbacks/onOfferApprovalCommentCreated' + onJobApprovalCreated: + $ref: '#/components/callbacks/onJobApprovalCreated' + onJobApprovalApproved: + $ref: '#/components/callbacks/onJobApprovalApproved' + onJobApprovalRejected: + $ref: '#/components/callbacks/onJobApprovalRejected' + onJobApprovalAbandoned: + $ref: '#/components/callbacks/onJobApprovalAbandoned' + onJobApprovalStepApproved: + $ref: '#/components/callbacks/onJobApprovalStepApproved' + onJobApprovalStepRejected: + $ref: '#/components/callbacks/onJobApprovalStepRejected' + onJobApproverSkipped: + $ref: '#/components/callbacks/onJobApproverSkipped' + onJobApproverDelegated: + $ref: '#/components/callbacks/onJobApproverDelegated' + onJobApprovalCommentCreated: + $ref: '#/components/callbacks/onJobApprovalCommentCreated' + onReviewCreated: + $ref: '#/components/callbacks/onReviewCreated' + onReviewUpdated: + $ref: '#/components/callbacks/onReviewUpdated' + onReviewDeleted: + $ref: '#/components/callbacks/onReviewDeleted' + onApplicationScreeningAnswersCreated: + $ref: '#/components/callbacks/onApplicationScreeningAnswersCreated' + onApplicationScreeningAnswersUpdated: + $ref: '#/components/callbacks/onApplicationScreeningAnswersUpdated' + onOnboardingProcessStarted: + $ref: '#/components/callbacks/onOnboardingProcessStarted' + onOnboardingAssignmentsHighPriorityCompleted: + $ref: '#/components/callbacks/onOnboardingAssignmentsHighPriorityCompleted' + onOnboardingAssignmentsCompleted: + $ref: '#/components/callbacks/onOnboardingAssignmentsCompleted' + operationId: subscriptions.create + tags: + - subscriptions + security: + - key: [] + - oauth: + - webhooks_write + - webhooks_manage + get: + parameters: + - $ref: '#/components/parameters/pageId' + - $ref: '#/components/parameters/limit' + summary: Retrieve webhook subscriptions. + responses: + '200': + description: List of subscription details. + content: + application/json: + schema: + $ref: '#/components/schemas/Subscriptions' + headers: + Link: + description: >- + Link to next resources is provided in the Link header according + to [RFC8288](https://tools.ietf.org/html/rfc8288). The relation + type is "next". + schema: + type: string + '401': + description: Unauthorized + '403': + description: No permission to see subscriptions + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + operationId: subscriptions.getAll + tags: + - subscriptions + security: + - key: [] + - oauth: + - webhooks_read + - webhooks_manage + /subscriptions/{id}: + parameters: + - $ref: '#/components/parameters/subscriptionId' + get: + summary: Retrieve single webhook subscription. + responses: + '200': + description: Subscription details. + content: + application/json: + schema: + $ref: '#/components/schemas/Subscription' + '403': + description: No permission to see this subscription. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + $ref: '#/components/responses/SubscriptionNotFound' + operationId: subscriptions.get + tags: + - subscriptions + security: + - key: [] + - oauth: + - webhooks_read + - webhooks_manage + delete: + summary: Delete webhook subscription. + responses: + '204': + description: Webhook subscription deleted. + '403': + description: No permission to delete webhook subscription. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + $ref: '#/components/responses/SubscriptionNotFound' + operationId: subscriptions.delete + tags: + - subscriptions + security: + - key: [] + - oauth: + - webhooks_delete + - webhooks_manage + /subscriptions/{id}/activation: + parameters: + - $ref: '#/components/parameters/subscriptionId' + put: + summary: Activate webhook subscription. + description: > + To ensure that target server is ready to consume notifications, we + require you to implement the initial + + handshake. + + + Having subscription with `callbackUrl`: `https://example.org/hook`, + during activation we will make `POST` + + request with `X-Hook-Secret` header: + + + ``` + + POST https://example.com/hook + + X-Hook-Secret: 4jn8fs9011jj8 + + ``` + + + We expect your server to respond within the time of 20 seconds with HTTP + `200` response containing + + `X-Hook-Secret` header with same value. + + + ``` + + Response 200 + + X-Hook-Secret: 4jn8fs9011jj8 + + ``` + responses: + '204': + description: Subscription activated. + '404': + $ref: '#/components/responses/SubscriptionNotFound' + '409': + description: Subscription already activated. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '424': + description: Webhook activation handshake failed. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + operationId: subscriptions.activate + tags: + - subscriptions + security: + - key: [] + - oauth: + - webhooks_write + - webhooks_manage + /subscriptions/{id}/secret-key: + parameters: + - $ref: '#/components/parameters/subscriptionId' + post: + summary: Generate secret key for a webhook subscription. + description: > + We allow you to generate a secret key for the subscription. You can use + it to verify the author of callback messages. When you + + have a secret key already defined - a creation of new one will make old + one deprecated - it will be still active for 24 hours + + though. You can have up to 16 non-expired secret keys. + + + A signature will be included in header `smartrecruiters-signature` of + callback request. Additionally we will send + + `smartrecruiters-timestamp` header with timestamp (seconds) of request. + + + `smartrecruiters-signature` header value has the following format: + + + ``` + + $SIGNATURE_SCHEMA=$SIGNATURE_1;$SIGNATURE_SCHEMA=$SIGNATURE_2... + + ``` + + + As you may notice there may be multiple signatures included in the + header. It can be caused by one or both: + + * having multiple active keys + + * smartrecruiters providing multiple signatures per key with different + signature schemes. We may use it in the + + future to deliver new algorithm of signature creation without breaking + backward compability. + + Every segment of header value is delimited by `;` character + + + Currently, we support and sent following signature + (`$SIGNATURE_SCHEMA`): + + + #### 1) `v1` + + + Signature calculated using HMAC with SHA256 algorithm. Hash should be + calculated from following elements + + concatenated by the `.` character: + * `smartrecruiters-timestamp` header value + * request body + * `event-id` header value + * `event-name` header value + * `event-version` header value + * `link` header value + + Order of this elements is important. In absence of header please use an + empty string as its value. + + + For example assume we have: + + * One active secret key: HeBVky2bccvvkcXPimH8c + + * Callback request: + * headers: + * content-type: application/json + * smartrecruiters-signature: "v1=2e9291f10d44ca10204a4cd81b05d73b6a316b2b605d4e2e0e0b37b40198ce1f" + * smartrecruiters-timestamp = "1574080897" + * event-id = "123" + * link = "; rel=self" + * event-name = "application.created" + * event-version = "v201910" + * body: {"job_id":"jid","candidate_id": "cid"} + + hash should be calculated from value: + + ``` + + 1574080897.{"job_id":"jid","candidate_id":"cid"}.123.application.created.v201910.; + rel=self + + ``` + + + and after using HMAC and SHA256 it should give you hash : + 2e9291f10d44ca10204a4cd81b05d73b6a316b2b605d4e2e0e0b37b40198ce1f, + + + so that `smartrecruiters-signature` header in the callback request will + have value: + + `v1=2e9291f10d44ca10204a4cd81b05d73b6a316b2b605d4e2e0e0b37b40198ce1f` + responses: + '201': + description: Secret key sucessfully generated. + content: + application/json: + schema: + $ref: '#/components/schemas/SecretKeyPayload' + '403': + description: > + With codes: + + * **NO_PERMISSION_TO_MANAGE_WEBHOOKS** when no permission to manage + webhook subscriptions + + * **SECRET_KEYS_LIMIT_EXCEEDED** when secret keys limit for + subscription is exceeded + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + $ref: '#/components/responses/SubscriptionNotFound' + operationId: subscriptions.generateSecretKey + tags: + - subscriptions + security: + - key: [] + - oauth: + - webhooks_write + - webhooks_manage + get: + summary: Retrieve subscription secret key + description: Retrieves the last secret key for webhook subscription. + responses: + '200': + description: Subscription secret key. + content: + application/json: + schema: + $ref: '#/components/schemas/SecretKeyPayload' + '403': + description: No permission to retrieve secret key for webhook subscription. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + $ref: '#/components/responses/SubscriptionNotFound' + operationId: subscriptions.getSecretKey + tags: + - subscriptions + security: + - key: [] + - oauth: + - webhooks_read + - webhooks_manage + /subscriptions/{id}/callbacks-log: + get: + parameters: + - $ref: '#/components/parameters/subscriptionId' + - $ref: '#/components/parameters/pageId' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/callbackStatus' + - $ref: '#/components/parameters/after' + - $ref: '#/components/parameters/before' + summary: Retrieve callback request details starting from newest. + responses: + '200': + description: List of callback request details. + content: + application/json: + schema: + $ref: '#/components/schemas/CallbackRequests' + headers: + Link: + description: >- + Link to next resources is provided in the Link header according + to [RFC8288](https://tools.ietf.org/html/rfc8288). The relation + type is "next". + schema: + type: string + operationId: subscriptions.searchCallbackLog + tags: + - subscriptions + security: + - key: [] + - oauth: + - webhooks_read + - webhooks_manage + components: + schemas: + ApplyApiResponse: + type: object + properties: + id: + type: string + createdOn: + type: string + candidatePortalUrl: + type: string + smartrJoinUrl: + type: string + ApplyApiError: + required: + - code + - id + type: object + properties: + id: + type: string + code: + type: string + enum: + - INVALID_REQUEST + - INVALID_INPUT + - DATA_VALIDATION_ERROR + - RESOURCE_NOT_FOUND_ERROR + - COMPANY_NOT_FOUND_ERROR + - COMPANY_RETRIEVAL_ERROR + - APPLY_API_ERROR + - FILE_UPLOAD_ERROR + - FILE_API_ERROR + - INVALID_API_KEY_ERROR + - UNAUTHORIZED + - REST_CALL_TIMEOUT + - TRAFFIC_LOCKED + message: + type: string + AnswerRecord: + type: object + properties: + fields: + type: array + additionalProperties: + type: array + items: + type: string + description: >- + Multiple fields may be used for example for questions (Preferred + Work Shifts, Languages, EEO, Currency) + items: + $ref: '#/components/schemas/AnswerField' + required: + - fields + ApplyApiRequest: + required: + - email + - firstName + - lastName + type: object + properties: + firstName: + maxLength: 128 + minLength: 0 + type: string + lastName: + maxLength: 128 + minLength: 0 + type: string + email: + maxLength: 128 + minLength: 0 + type: string + createJoinLink: + type: boolean + conditionalsIncluded: + type: boolean + description: > + Specifies whether conditional questions should be returned in the + response. 'false' if not specified + + - Only available for BETA customers + phoneNumber: + maxLength: 128 + minLength: 0 + type: string + location: + $ref: '#/components/schemas/Location' + web: + $ref: '#/components/schemas/Web' + tags: + type: array + items: + type: string + education: + type: array + items: + $ref: '#/components/schemas/Education' + experience: + type: array + items: + $ref: '#/components/schemas/Employment' + sourceDetails: + $ref: '#/components/schemas/SourceDetails' + resume: + $ref: '#/components/schemas/Attachment' + avatar: + $ref: '#/components/schemas/Attachment' + attachments: + type: array + items: + $ref: '#/components/schemas/Attachment' + answers: + type: array + items: + $ref: '#/components/schemas/ScreeningQuestionAnswer' + messageToHiringManager: + maxLength: 4000 + minLength: 0 + type: string + consent: + type: boolean + consentDecisions: + type: object + additionalProperties: + type: boolean + internal: + type: boolean + Attachment: + required: + - id + - actions + type: object + properties: + fileName: + maxLength: 100 + minLength: 0 + type: string + mimeType: + type: string + fileContent: + maxLength: 13981014 + minLength: 1 + type: string + type: + type: string + enum: + - VIDEO_URL + - PDF_URL + - OTHER_URL + url: + type: string + format: uri + id: + type: string + name: + type: string + contentType: + type: string + actions: + type: object + required: + - download + properties: + download: + $ref: '#/components/schemas/Action' + Education: + required: + - degree + - institution + type: object + properties: + institution: + maxLength: 200 + minLength: 1 + type: string + degree: + maxLength: 200 + minLength: 1 + type: string + major: + maxLength: 200 + minLength: 1 + type: string + current: + type: boolean + startDate: + pattern: \d{4}-\d{2}-\d{2} + type: string + $ref: '#/components/schemas/When' + endDate: + pattern: \d{4}-\d{2}-\d{2} + type: string + $ref: '#/components/schemas/When' + location: + maxLength: 200 + minLength: 0 + type: string + description: + maxLength: 4000 + minLength: 0 + type: string + Employment: + required: + - startDate + - title + type: object + properties: + title: + maxLength: 200 + minLength: 0 + type: string + company: + maxLength: 200 + minLength: 0 + type: string + current: + type: boolean + startDate: + pattern: \d{4}-\d{2}-\d{2} + type: string + endDate: + pattern: \d{4}-\d{2}-\d{2} + type: string + location: + maxLength: 200 + minLength: 0 + type: string + description: + maxLength: 4000 + minLength: 0 + type: string + Location: + type: object + properties: + country: + maxLength: 128 + minLength: 1 + type: string + countryCode: + maxLength: 2 + minLength: 2 + type: string + region: + maxLength: 128 + minLength: 0 + type: string + regionCode: + maxLength: 5 + minLength: 2 + type: string + city: + maxLength: 128 + minLength: 1 + type: string + lat: + maximum: 90 + minimum: -90 + type: number + format: float + lng: + maximum: 180 + minimum: -180 + type: number + format: float + address: + type: string + format: address + postalCode: + type: string + longitude: + type: string + latitude: + type: string + manual: + type: boolean + remote: + type: boolean + required: + - city + - countryCode + description: >- + regionCode is not recommended to be used for countries other than the + United States. + ScreeningQuestionAnswer: + required: + - id + - records + type: object + properties: + id: + type: string + records: + type: array + items: + $ref: '#/components/schemas/AnswerRecord' + SourceDetails: + required: + - sourceId + - sourceTypeId + type: object + properties: + sourceTypeId: + type: string + sourceSubTypeId: + type: string + sourceId: + type: string + Web: + type: object + properties: + skype: + maxLength: 100 + minLength: 0 + type: string + linkedIn: + maxLength: 1000 + minLength: 0 + type: string + facebook: + maxLength: 1000 + minLength: 0 + type: string + twitter: + maxLength: 100 + minLength: 0 + type: string + website: + maxLength: 1000 + minLength: 0 + type: string + ApplicationStatusInfo: + type: object + properties: + status: + type: string + enum: + - NEW + - IN_REVIEW + - INTERVIEW + - OFFER + - HIRE + - REJECTED + - WITHDRAWN + - LEAD + - TRANSFERRED + - OTHER + ApplyConfiguration: + required: + - questions + - settings + type: object + properties: + questions: + type: array + items: + $ref: '#/components/schemas/ScreeningQuestion' + settings: + $ref: '#/components/schemas/ApplySettings' + privacyPolicies: + type: array + items: + $ref: '#/components/schemas/PrivacyPolicy' + ApplySettings: + type: object + properties: + avatarUploadAvailable: + type: boolean + FieldValue: + required: + - id + - label + type: object + properties: + id: + type: string + label: + type: string + PrivacyPolicy: + type: object + properties: + url: + type: string + orgName: + type: string + ScreeningQuestion: + required: + - fields + - id + - label + - repeatable + type: object + properties: + id: + type: string + label: + type: string + repeatable: + type: boolean + fields: + type: array + items: + $ref: '#/components/schemas/ScreeningQuestionField' + ScreeningQuestionField: + required: + - id + - label + - required + - type + - values + type: object + properties: + id: + type: string + label: + type: string + type: + type: string + enum: + - INPUT_TEXT + - SINGLE_SELECT + - MULTI_SELECT + - RADIO + - CHECKBOX + - TEXTAREA + - INFORMATION + required: + type: boolean + complianceType: + type: string + enum: + - DIVERSITY + values: + type: array + items: + $ref: '#/components/schemas/FieldValue' + ApprovalRequests: + description: Approval requests + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/ApprovalRequest' + ApprovalRequest: + description: Approval request + type: object + properties: + id: + $ref: '#/components/schemas/ApprovalRequestId' + subject: + $ref: '#/components/schemas/Subject' + type: + $ref: '#/components/schemas/Type' + decisionMode: + $ref: '#/components/schemas/DecisionMode' + status: + description: Status of approval request + type: string + example: APPROVED + enum: + - PENDING + - APPROVED + - REJECTED + - ABANDONED + steps: + type: array + items: + $ref: '#/components/schemas/Step' + approvalRequestId: + type: string + ApprovalRequestId: + description: Approval request id + type: string + Subject: + description: Subject of approval request + type: object + properties: + id: + type: string + type: + type: string + enum: + - job + - offer + Type: + type: string + enum: + - sequential + - parallel + DecisionMode: + type: string + enum: + - any + - all + Step: + description: Required steps to complete approval + type: object + properties: + status: + description: Status of approval step + type: string + example: APPROVED + enum: + - PENDING + - APPROVED + - REJECTED + - SKIPPED + approvers: + description: The order matters when type is `sequential` + type: array + items: + $ref: '#/components/schemas/Approver' + StepInput: + description: Required steps to complete approval + type: object + properties: + approvers: + description: The order matters when type is `sequential` + type: array + minItems: 1 + items: + $ref: '#/components/schemas/ApproverInput' + Approver: + description: Approver + type: object + properties: + id: + description: Approver id + type: string + decision: + description: Decision status for approver + type: string + example: APPROVED + enum: + - PENDING + - APPROVED + - REJECTED + - SKIPPED + decidedOn: + description: Decision date + type: string + format: date-time + ApproverInput: + description: Approver + type: object + properties: + id: + description: Approver id + type: string + Comments: + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/Comment' + Comment: + type: object + properties: + content: + type: string + authorId: + type: string + createdOn: + type: string + format: date-time + ErrorResponse: + type: object + properties: + errors: + type: array + items: + $ref: '#/components/schemas/Error' + message: + type: string + required: + - errors + Error: + type: object + required: + - code + properties: + code: + type: string + message: + type: string + PartnerConfigurationRequest: + required: + - assessmentPackageListUrl + - singleAssessmentPackageUrl + - consentUrl + - consentDisplayMode + - oauthTokenUrl + - supportedAssessmentTypes + type: object + properties: + consentUrl: + type: string + format: uri + description: > + Refers to Partner API: `GET /integration`. SmartRecruiters will add + URL query parameters: + + companyId and redirect (only when `consentDisplayMode=REDIRECT`) + consentDisplayMode: + type: string + enum: + - REDIRECT + - POPUP + description: > + REDIRECT: End users will leave SmartRecruiters and be redirected to + the url configured in consentUrl. + + POPUP: End users will remain in SmartRecruiters and see a pop up + widget. + assessmentPackageListUrl: + type: string + format: uri + description: 'Refers to Partner API: `GET /packages`' + singleAssessmentPackageUrl: + type: string + format: uri + description: 'Refers to Partner API: `GET /packages/{assessmentPackageId}`' + packageOrderUrl: + type: string + format: uri + description: 'Refers to Partner API: `POST /packages/orders`' + inlineAssessmentPackageOrderUrl: + type: string + format: uri + description: 'Refers to Partner API: `POST /packages/inline/orders`' + oauthTokenUrl: + type: string + format: uri + description: >- + Endpoint to exchange the OAuth 2.0 credentials we received from your + service for an access token to your endpoints. + integrationDisableUrl: + type: string + format: uri + description: >- + Refers to Partner API: `DELETE + com/integrations/companies/{companyId}` + fields: + type: array + maxItems: 5 + items: + $ref: '#/components/schemas/Field' + supportedAssessmentTypes: + type: array + minItems: 1 + maxItems: 6 + items: + $ref: '#/components/schemas/AssessmentType' + PartnerConfiguration: + required: + - assessmentPackageListUrl + - singleAssessmentPackageUrl + - consentUrl + - consentDisplayMode + - oauthTokenUrl + - supportedAssessmentTypes + type: object + properties: + consentUrl: + type: string + description: >- + Refers to Partner API: GET /integration. SmartRecruiters will add + URL query parameters: companyId and redirect (only when + consentDisplayMode=REDIRECT) + format: uri + consentDisplayMode: + type: string + description: >- + REDIRECT: End users will leave SmartRecruiters and be redirected to + the url configured in consentUrl. POPUP: End users will remain in + SmartRecruiters and see a pop up widget. + enum: + - REDIRECT + - POPUP + assessmentPackageListUrl: + type: string + description: 'Refers to Partner API: GET /packages' + format: uri + singleAssessmentPackageUrl: + type: string + description: 'Refers to Partner API: GET /packages/{assessmentPackageId}' + format: uri + packageOrderUrl: + type: string + description: 'Refers to Partner API: POST /packages/orders' + format: uri + inlineAssessmentPackageOrderUrl: + type: string + description: 'Refers to Partner API: POST /packages/inline/orders' + format: uri + oauthTokenUrl: + type: string + description: >- + Endpoint to exchange the OAuth 2.0 credentials we received from your + service for an access token to your endpoints. + format: uri + integrationDisableUrl: + type: string + description: 'Refers to Partner API: DELETE /integrations/companies/{companyId}' + format: uri + fields: + type: array + maxItems: 5 + items: + $ref: '#/components/schemas/FieldView' + supportedAssessmentTypes: + type: array + minItems: 1 + maxItems: 6 + items: + $ref: '#/components/schemas/AssessmentType' + FieldView: + type: object + properties: + id: + type: string + name: + type: string + description: + type: string + Field: + required: + - description + - id + - name + type: object + properties: + id: + type: string + description: Id field will be used in the URL as a HTTP request parameter name + name: + type: string + description: User friendly name of the parameter + description: + type: string + description: Description saying what is the purpose of this parameter + ClientCredentials: + required: + - clientId + - clientSecret + type: object + properties: + clientId: + type: string + clientSecret: + type: string + AssessmentResult: + required: + - assessmentId + type: object + properties: + assessmentId: + type: string + assessmentDate: + type: string + format: date-time + submissionDate: + type: string + format: date-time + assessmentName: + type: string + score: + $ref: '#/components/schemas/Score' + type: string + scoreLabel: + type: string + summary: + type: string + attachments: + type: array + items: + $ref: '#/components/schemas/Attachment' + status: + type: string + enum: + - IN_PROGRESS + - PENDING + - COMPLETED + - REJECTED + - EXPIRED + name: + type: string + PackageResult: + type: object + properties: + assessmentPackageDate: + type: string + format: date-time + description: The date when assessments package was sent to the candidate + submissionDate: + type: string + format: date-time + description: The date when assessments package was submitted by the candidate + name: + type: string + description: + type: string + deprecated: true + description: >- + Not used. To display a short description in the UI, use "summary" + instead + status: + type: string + enum: + - IN_PROGRESS + - PENDING + - COMPLETED + - REJECTED + - EXPIRED + score: + $ref: '#/components/schemas/Score' + scoreLabel: + type: string + description: Will be displayed next to the score in the candidate profile + summary: + type: string + description: >- + Will be displayed next to the score and label in the candidate + profile + attachments: + type: array + items: + $ref: '#/components/schemas/Attachment' + assessmentResults: + type: array + items: + $ref: '#/components/schemas/AssessmentResult' + Score: + required: + - max + - min + - raw + type: object + properties: + raw: + type: integer + format: int64 + description: Score value + min: + type: integer + format: int64 + description: Range lower bound - included + max: + type: integer + format: int64 + description: Range upper bound - included + description: >- + Structural score 'raw' value in a range from min to max - including min + and max. For example, score {raw:28, min:20, max:80} gives a normalized + score of 13%, which users can see in SR UI. The 'raw' value will be + converted to SR UI label '28/80' when min value is not provided. + example: >- + {raw:28, min:20, max:80} gives a normalized 13% or label '28/80' (min is + not presented in label) + AttachmentResult: + required: + - url + type: object + properties: + url: + type: string + AssessmentType: + type: string + enum: + - VIDEO_INTERVIEW + - BEHAVIORAL_ASSESSMENT + - BACKGROUND_CHECK + - REFERENCE_CHECK + - SKILL_TEST + - INLINE_ASSESSMENT + Unit: + type: object + Requester: + required: + - email + type: object + properties: + email: + type: string + Assessment: + required: + - description + - id + - type + type: object + properties: + id: + type: string + type: + $ref: '#/components/schemas/AssessmentType' + name: + type: string + description: + type: string + AssessmentPackage: + required: + - assessments + - description + - id + - name + - type + type: object + properties: + id: + type: string + type: + $ref: '#/components/schemas/AssessmentType' + name: + type: string + description: + type: string + assessments: + type: array + items: + $ref: '#/components/schemas/Assessment' + AssessmentPackageOrderRequest: + required: + - assessmentPackageId + - candidate + - companyId + - jobId + - resultCallbackURL + - job + type: object + properties: + resultCallbackURL: + type: string + format: uri + candidate: + $ref: '#/components/schemas/Candidate' + job: + $ref: '#/components/schemas/Job' + requester: + $ref: '#/components/schemas/OrderRequester' + assessmentPackageId: + type: string + jobId: + type: string + deprecated: true + companyId: + type: string + fields: + type: object + additionalProperties: + type: string + example: + partner-field-id: partner-field-value + Candidate: + required: + - id + - internal + - firstName + - lastName + - createdOn + - actions + type: object + properties: + id: + type: string + email: + type: string + firstName: + type: string + lastName: + type: string + applicationLanguage: + type: string + internal: + type: boolean + description: true, if the candidate has at least one internal application + createdOn: + type: string + format: date-time + updatedOn: + type: string + format: date-time + location: + $ref: '#/components/schemas/CandidateLocation' + averageRating: + type: number + deprecated: true + tags: + type: array + items: + type: string + consent: + type: object + properties: + status: + $ref: '#/components/schemas/ConsentStatus' + primaryAssignment: + type: object + required: + - job + - status + properties: + job: + type: object + required: + - id + - title + - actions + properties: + id: + type: string + title: + type: string + actions: + type: object + required: + - details + properties: + details: + $ref: '#/components/schemas/Action' + status: + $ref: '#/components/schemas/CandidateStatusEnum' + subStatus: + type: string + secondaryAssignments: + type: array + items: + type: object + required: + - job + properties: + job: + type: object + required: + - id + - actions + properties: + id: + type: string + actions: + type: object + required: + - details + properties: + details: + $ref: '#/components/schemas/Action' + actions: + type: object + required: + - details + - properties + properties: + details: + $ref: '#/components/schemas/Action' + properties: + $ref: '#/components/schemas/Action' + allOf: + - type: object + required: + - id + properties: + id: + $ref: '#/components/schemas/Uuid' + status: + $ref: '#/components/schemas/CandidateAttendeeStatusValue' + Job: + required: + - id + type: object + properties: + id: + type: string + format: uuid + job: + type: object + properties: + id: + type: string + title: + type: string + actions: + type: object + required: + - details + properties: + details: + $ref: '#/components/schemas/Action' + positionDetails: + $ref: '#/components/schemas/Action' + title: + type: string + refNumber: + type: string + createdOn: + type: string + format: date-time + updatedOn: + type: string + format: date-time + description: Job modification date + lastActivityOn: + type: string + format: date-time + description: Indicates last activity associated with a job + department: + $ref: '#/components/schemas/Department' + location: + $ref: '#/components/schemas/Location' + status: + $ref: '#/components/schemas/JobStatus' + postingStatus: + $ref: '#/components/schemas/PostingStatus' + OrderRequester: + required: + - email + - userId + type: object + properties: + userId: + type: string + email: + type: string + InlineAssessmentPackageOrderRequest: + required: + - assessmentPackageId + - candidate + - companyId + - completedAssessmentCallbackUrl + - jobId + - resultCallbackURL + - job + type: object + properties: + resultCallbackURL: + type: string + format: uri + candidate: + $ref: '#/components/schemas/InlineCandidate' + job: + $ref: '#/components/schemas/InlineJob' + assessmentPackageId: + type: string + jobId: + type: string + deprecated: true + companyId: + type: string + completedAssessmentCallbackUrl: + type: string + fields: + type: object + additionalProperties: + type: string + example: + partner-field-id: partner-field-value + InlineCandidate: + required: + - applicationLanguage + - email + - firstName + - lastName + type: object + properties: + email: + type: string + firstName: + type: string + lastName: + type: string + applicationLanguage: + type: string + InlineJob: + required: + - id + type: object + properties: + id: + type: string + format: uuid + InlineAssessmentPackageResponse: + required: + - assessmentPackageURL + type: object + properties: + url: + type: string + description: URL of inline assessment which will be open for candidate + TokenInput: + type: object + required: + - grant_type + - client_id + - client_secret + properties: + grant_type: + type: string + enum: + - client_credentials + client_id: + type: string + client_secret: + type: string + AccessToken: + type: object + required: + - access_token + - expires_in + properties: + access_token: + type: string + expires_in: + type: integer + description: >- + Indicates for how many seconds the token will be valid from the + moment it was generated. + TokenErrorResponse: + type: object + required: + - error + properties: + error: + type: string + error_description: + type: string + Uuid: + type: string + format: uuid + AssessmentOrder: + type: object + properties: + applicationId: + $ref: '#/components/schemas/Uuid' + orderId: + $ref: '#/components/schemas/Uuid' + assessmentPackageDate: + type: string + format: date-time + submissionDate: + type: string + format: date-time + assessmentPackageName: + type: string + description: + type: string + status: + type: string + score: + type: string + scoreLabel: + type: string + summary: + type: string + attachments: + type: array + items: + $ref: '#/components/schemas/Attachment' + assessments: + type: array + items: + $ref: '#/components/schemas/AssessmentResult' + AssessmentOrders: + type: array + items: + $ref: '#/components/schemas/AssessmentOrder' + Events: + type: object + properties: + nextPageId: + type: string + description: Unique identifier for the next page of events + limit: + type: integer + description: Number of audit events that were requested + content: + type: array + items: + $ref: '#/components/schemas/Event' + EventContext: + type: object + properties: + authenticationType: + type: string + enum: + - PASSWORD + - API_KEY + - WEB_SSO + - AUTH_TOKEN + - SUPPORT_ACCESS + currentRole: + $ref: '#/components/schemas/UserRole' + previousRole: + $ref: '#/components/schemas/UserRole' + officeName: + type: string + Event: + type: object + properties: + id: + type: string + description: Unique identifier of the event + eventName: + type: string + description: Name of the event + eventDate: + type: string + format: date-time + description: >- + Timestamp when _the thing_ represented by the event actually + happened + authorType: + type: string + enum: + - USER + - SUPPORT_USER + - SYSTEM + description: Type of the author who generated the event + authorId: + type: string + description: Unique identifier of the author + entityType: + type: string + enum: + - USER + - CANDIDATE + - APPLICATION + - OFFER + - JOB + - COMPANY + - JOB_PROPERTY + - JOB_AD + - CREDENTIAL + - REPORT_FILE + - ONBOARDING_PROCESS + description: Type of the entity that the event is related to + entityId: + type: string + description: Unique identifier of the entity that the event is related to + context: + type: object + $ref: '#/components/schemas/EventContext' + description: Additional context of event + name: + $ref: '#/components/schemas/EventName' + version: + type: string + readOnly: true + UserRole: + type: string + enum: + - ADMINISTRATOR + - EMPLOYEE + - EXTENDED + - RESTRICTED + - STANDARD + CandidateTags: + type: object + required: + - tags + properties: + tags: + type: array + maxItems: 100 + items: + type: string + maxLength: 50 + OnboardingStatus: + type: object + required: + - onboardingStatus + properties: + onboardingStatus: + type: string + enum: + - READY_TO_ONBOARD + - ONBOARDING_SUCCESSFUL + - ONBOARDING_FAILED + Candidates: + type: object + required: + - limit + - offset + - totalFound + - content + properties: + limit: + type: integer + offset: + type: integer + nextPageId: + type: string + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/Candidate' + PersonalDetails: + type: object + properties: + firstName: + type: string + minLength: 1 + lastName: + type: string + minLength: 1 + email: + type: string + format: email + phoneNumber: + type: string + location: + $ref: '#/components/schemas/CandidateLocation' + web: + $ref: '#/components/schemas/WebProfile' + CandidateInput: + type: object + required: + - firstName + - lastName + - email + properties: + firstName: + type: string + minLength: 1 + lastName: + type: string + minLength: 1 + email: + type: string + format: email + phoneNumber: + type: string + location: + $ref: '#/components/schemas/CandidateLocation' + web: + $ref: '#/components/schemas/WebProfile' + tags: + type: array + items: + type: string + education: + type: array + default: [] + items: + $ref: '#/components/schemas/Education' + experience: + type: array + default: [] + items: + $ref: '#/components/schemas/Experience' + sourceDetails: + $ref: '#/components/schemas/CandidateSource' + internal: + type: boolean + CandidateDetails: + type: object + properties: + id: + type: string + internal: + type: boolean + firstName: + type: string + lastName: + type: string + email: + type: string + phoneNumber: + type: string + location: + $ref: '#/components/schemas/CandidateLocation' + web: + $ref: '#/components/schemas/WebProfile' + createdOn: + type: string + format: date-time + updatedOn: + type: string + format: date-time + tags: + type: array + items: + type: string + averageRating: + type: number + deprecated: true + education: + type: array + items: + $ref: '#/components/schemas/Education' + experience: + type: array + items: + $ref: '#/components/schemas/Experience' + primaryAssignment: + allOf: + - $ref: '#/components/schemas/Job' + - $ref: '#/components/schemas/Assignment' + secondaryAssignments: + type: array + items: + allOf: + - $ref: '#/components/schemas/Job' + - $ref: '#/components/schemas/Assignment' + actions: + type: object + required: + - properties + properties: + properties: + $ref: '#/components/schemas/Action' + attachments: + $ref: '#/components/schemas/Action' + consent: + $ref: '#/components/schemas/Action' + consents: + $ref: '#/components/schemas/Action' + CandidateLocation: + type: object + properties: + country: + type: string + minLength: 1 + countryCode: + type: string + minLength: 2 + maxLength: 2 + regionCode: + type: string + region: + type: string + city: + type: string + minLength: 1 + lat: + type: number + format: float + lng: + type: number + format: float + Attachments: + type: object + required: + - totalFound + - content + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/Attachment' + CandidateAttachmentsForJob: + type: object + required: + - totalFound + - content + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/CandidateAttachmentForJob' + CandidateAttachmentForJob: + type: object + required: + - id + - name + - type + - contentType + properties: + id: + type: string + name: + type: string + type: + type: string + contentType: + type: string + actions: + type: object + required: + - download + - remove + properties: + download: + $ref: '#/components/schemas/Action' + remove: + $ref: '#/components/schemas/Action' + CandidateStatusEnum: + type: string + enum: + - LEAD + - NEW + - IN_REVIEW + - INTERVIEW + - OFFERED + - HIRED + - REJECTED + - WITHDRAWN + - TRANSFERRED + CandidateStatus: + type: object + required: + - status + properties: + status: + $ref: '#/components/schemas/CandidateStatusEnum' + subStatus: + type: string + startsOn: + type: string + format: date-time + reason: + type: string + description: >- + id of rejection (GET /configuration/rejection-reasons) or withdrawal + (GET /configuration/withdrawal-reasons) reason. + CandidateStatusHistoryList: + type: object + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/CandidateStatusHistoryListElem' + CandidateProperties: + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/CandidateProperty' + CandidateProperty: + type: object + required: + - id + - label + - type + - value + - actions + properties: + id: + type: string + label: + type: string + type: + $ref: '#/components/schemas/CandidatePropertyType' + value: + oneOf: + - type: string + - type: boolean + - type: number + - type: object + required: + - code + - value + properties: + code: + type: string + value: + type: number + valueLabel: + type: string + description: Label of selected option for SINGLE_SELECT field type + actions: + type: object + required: + - configuration + properties: + configuration: + $ref: '#/components/schemas/Action' + CandidatePropertyInputValue: + type: object + properties: + value: + description: string, number, boolean or object + Application: + allOf: + - properties: + applicationId: + type: string + - $ref: '#/components/schemas/Assignment' + - $ref: '#/components/schemas/ApplicationUrl' + type: object + properties: + candidateId: + type: string + format: guid + jobId: + type: string + format: guid + Assignment: + type: object + properties: + status: + $ref: '#/components/schemas/CandidateStatusEnum' + subStatus: + type: string + startsOn: + type: string + format: date-time + source: + type: string + reasonOfRejection: + $ref: '#/components/schemas/Property' + reasonOfWithdrawal: + $ref: '#/components/schemas/Property' + actions: + type: object + properties: + sourceDetails: + $ref: '#/components/schemas/Action' + ApplicationUrl: + description: > + url property of a retrieved application represents current location of + its details. Please be aware that the resource location may change in + the future. + type: object + properties: + url: + type: string + Actions: + type: object + additionalProperties: + $ref: '#/components/schemas/Action' + Action: + type: object + required: + - url + - method + properties: + url: + type: string + method: + type: string + enum: + - GET + - POST + - PUT + - PATCH + - OPTIONS + - DELETE + - HEAD + - CONNECT + WebProfile: + type: object + properties: + skype: + type: string + linkedin: + type: string + facebook: + type: string + twitter: + type: string + website: + type: string + Experience: + type: object + properties: + title: + type: string + minLength: 1 + company: + type: string + minLength: 1 + current: + type: boolean + startDate: + $ref: '#/components/schemas/When' + endDate: + $ref: '#/components/schemas/When' + location: + type: string + description: + type: string + CandidateSource: + type: object + required: + - sourceTypeId + - sourceId + properties: + sourceTypeId: + type: string + minLength: 1 + sourceSubTypeId: + type: string + sourceId: + type: string + minLength: 1 + ScreeningAnswers: + type: object + required: + - totalFound + - content + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/ScreeningAnswer' + ScreeningAnswer: + type: object + required: + - id + - type + - category + - name + - label + - records + properties: + id: + type: string + description: Id of Question to which answer was responded + type: + type: string + enum: + - text + - checkbox + - languages + - acknowledgement + - textarea + - select + - files + - info + - eeo + - radio + - salaryExpectation + - currency + - work_shifts + category: + type: string + description: | + UUID for custom questions or fixed value for predefined questions: + - eeoInformation + - ofccpDisability + - ofccpVeteransForm + - veteranStatus + - disabilityStatus + - ofccpReasonableAccommodation + - ethnicity + - ethnicGroupsDescriptions + - todaysDate + - yourName + - preferredWorkShifts + - languages + - previousEmployment + - drivingRevoked + - drivingCurrent + - criminalRecord + - workPermit + name: + type: string + description: Question name visible to administrator on questions library list + label: + type: string + description: Question text shown to candidate + records: + type: array + description: >- + Multiple records may be used for example for questions (Preferred + Work Shifts, Languages) + items: + $ref: '#/components/schemas/AnswerRecord' + AnswerField: + type: object + required: + - id + - values + properties: + id: + type: string + label: + type: string + description: Field label shown to candidate - ignore when empty + values: + type: array + description: >- + Multiple values may be used for example for Multiselect Dropdown + question + items: + $ref: '#/components/schemas/AnswerFieldValue' + AnswerFieldValue: + type: object + required: + - id + - label + properties: + id: + type: string + description: Value text or value ID - depends on question definition + label: + type: string + description: Value text shown to candidate + CandidateStatusHistoryListElem: + type: object + properties: + changedOn: + type: string + format: date-time + status: + $ref: '#/components/schemas/CandidateStatusEnum' + subStatus: + type: string + actions: + $ref: '#/components/schemas/Actions' + CandidatePropertyType: + type: string + enum: + - BOOLEAN + - COUNTRY + - CURRENCY + - DATE + - NUMBER + - PERCENT + - REGION + - TEXT + - USER + - SINGLE_SELECT + CandidateConsentStatus: + type: object + required: + - status + properties: + date: + type: string + format: date-time + description: Available when `status` is `ACQUIRED` + status: + $ref: '#/components/schemas/ConsentStatus' + CandidateConsentDecisions: + type: object + required: + - decisions + properties: + decisions: + type: array + items: + $ref: '#/components/schemas/ConsentDecision' + recentPendingRequestCreatedOn: + type: string + format: date-time + ConsentDecision: + required: + - status + - scope + type: object + properties: + status: + $ref: '#/components/schemas/ConsentDecisionStatus' + scope: + $ref: '#/components/schemas/ConsentScope' + decidedOn: + type: string + format: date-time + description: >- + present when candidate has made a consent decision (i.e. `status` is + `acquired` or `declined`) + ConsentDecisionStatus: + type: string + description: | + * **acquired** - a candidate has decided to provide a consent + * **declined** - a candidate has decided to decline a consent + * **required** - a candidate has not made any decision yet, + enum: + - acquired + - declined + - required + ConsentScope: + type: string + description: > + Available when company uses single consent approach: + + * **Single** - a single consent to company privacy policy for all scopes + + Available when company uses separated consent approach: + + * **SmartRecruit** - indicates reading and understanding or accepting + company privacy policy for job applications, + + * **SmartCRM** - a consent to be part of company communities for future + career opportunities, + + * **SmartMessage:SMS** - a consent to receive text/SMS messages for job + applications and/or future career opportunities, + + * **SmartMessage:WhatsApp** - a consent to receive WhatsApp messages for + job applications and/or future career opportunities. + enum: + - Single + - SmartRecruit + - SmartCRM + - SmartMessage:SMS + - SmartMessage:WhatsApp + ConsentRequest: + type: object + required: + - id + properties: + id: + description: candidate id + type: string + ConsentStatus: + type: string + description: | + * **REQUIRED** - no request for consent yet, + * **PENDING** - consent requested, + * **ACQUIRED** - consent provided by a candidate + enum: + - REQUIRED + - PENDING + - ACQUIRED + ConsentRequestsResults: + type: object + required: + - results + properties: + results: + type: array + items: + oneOf: + - $ref: '#/components/schemas/ConsentRequestScheduled' + - $ref: '#/components/schemas/ConsentRequestUnavailable' + ConsentRequestScheduled: + type: object + required: + - status + - body + properties: + status: + type: integer + enum: + - 202 + body: + type: object + properties: + location: + type: string + ConsentRequestUnavailable: + type: object + required: + - status + properties: + status: + type: integer + enum: + - 403 + body: + type: boolean + enum: + - false + Property: + type: object + required: + - id + properties: + id: + type: string + minLength: 1 + label: + type: string + When: + type: string + format: when + description: >- + date in YYYY, YYYY-MM or YYYY-MM-dd format, ex. "2016", "2016-11", + "2016-11-29" + CandidatePropertyValue: + type: object + required: + - id + properties: + id: + type: string + format: uuid + value: + description: string, number, boolean or object + allOf: + - type: object + properties: + id: + type: string + format: alphanumericAndDash + minLength: 1 + maxLength: 36 + - $ref: '#/components/schemas/CandidatePropertyValueLabel' + Properties: + type: object + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/Property' + CompanyConfiguration: + type: object + properties: + identifier: + type: string + description: Identifier of a company. + name: + type: string + description: Company name. + location: + $ref: '#/components/schemas/Location' + website: + type: string + description: URL to company website. + industry: + $ref: '#/components/schemas/Industry' + logo: + type: string + description: URL to company logo. + JobPropertyDefinitionList: + type: object + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/JobPropertyDefinition' + JobPropertyDefinition: + type: object + required: + - label + - category + - visible + properties: + id: + type: string + label: + type: string + category: + type: string + enum: + - job + - organization + active: + type: boolean + visible: + type: boolean + required: + type: boolean + actions: + $ref: '#/components/schemas/Actions' + JobPropertyDefinitionCreationRequest: + type: object + required: + - label + - category + - visible + properties: + label: + type: string + category: + type: string + enum: + - job + - organization + active: + type: boolean + visible: + type: boolean + required: + type: boolean + JobPropertyValueDefinitionList: + type: object + properties: + totalFound: + type: integer + nextPageId: + type: string + content: + type: array + items: + $ref: '#/components/schemas/JobPropertyValueDefinition' + JobPropertyValueDefinition: + type: object + required: + - label + properties: + id: + type: string + pattern: ^[^/]+$ + minLength: 1 + maxLength: 100 + label: + type: string + minLength: 1 + maxLength: 200 + archived: + type: boolean + DependentJobPropertyValues: + type: object + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/DependentJobPropertyValue' + DependentJobPropertyValue: + allOf: + - $ref: '#/components/schemas/Identifiable' + - $ref: '#/components/schemas/Labeled' + DependentJobProperties: + type: object + required: + - totalFound + - content + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/DependentJobProperty' + DependentJobProperty: + type: object + required: + - id + - label + properties: + id: + type: string + minLength: 1 + maxLength: 100 + label: + type: string + minLength: 1 + maxLength: 200 + DependentJobPropertiesIds: + type: object + required: + - ids + properties: + ids: + type: array + items: + type: string + minLength: 1 + maxLength: 100 + minItems: 1 + DependentJobPropertyValuesRelations: + type: object + required: + - totalFound + - content + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/DependentJobPropertyValuesRelation' + DependentJobPropertyValuesRelation: + type: object + required: + - parent + - values + properties: + parent: + $ref: '#/components/schemas/RelationJobPropertyValue' + values: + type: array + items: + $ref: '#/components/schemas/RelationJobPropertyValue' + RelationJobPropertyValue: + required: + - id + type: object + properties: + id: + type: string + minLength: 1 + label: + type: string + Department: + type: object + required: + - label + properties: + id: + type: string + label: + type: string + description: + type: string + Departments: + type: object + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/Department' + HiringProcesses: + required: + - totalFound + - content + type: object + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/HiringProcess' + HiringProcess: + type: object + properties: + id: + type: string + name: + type: string + active: + type: boolean + subStatuses: + type: object + properties: + IN_REVIEW: + type: array + items: + type: string + INTERVIEW: + type: array + items: + type: string + OFFERED: + type: array + items: + type: string + OfferPropertiesDefinition: + type: object + properties: + categories: + type: array + items: + $ref: '#/components/schemas/OfferPropertiesCategory' + CandidatePropertyDefinitionList: + type: object + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/CandidatePropertyDefinition' + CandidatePropertyDefinition: + type: object + properties: + id: + type: string + label: + type: string + type: + $ref: '#/components/schemas/CandidatePropertyType' + availability: + $ref: '#/components/schemas/CandidatePropertyAvailability' + actions: + $ref: '#/components/schemas/Actions' + CandidatePropertyValueList: + type: object + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/CandidatePropertyValue' + CandidatePropertyValueLabel: + type: object + required: + - label + properties: + label: + type: string + format: value_label + minLength: 1 + maxLength: 1000 + SourceTypes: + type: object + required: + - totalFound + - content + properties: + totalFound: + type: integer + content: + type: array + items: + type: object + required: + - id + - label + - subtypes + - actions + properties: + id: + type: string + label: + type: string + actions: + type: object + required: + - values + properties: + values: + $ref: '#/components/schemas/Action' + subtypes: + type: array + minItems: 1 + items: + $ref: '#/components/schemas/Identifiable' + Sources: + type: object + required: + - totalFound + - limit + - offset + - content + properties: + totalFound: + type: integer + limit: + type: integer + offset: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/Source' + SourceDefinition: + type: object + required: + - label + - type + - subType + properties: + label: + type: string + subType: + $ref: '#/components/schemas/Identifiable' + type: + $ref: '#/components/schemas/Identifiable' + Source: + type: object + required: + - id + - label + - sourceSubType + - actions + properties: + id: + type: string + label: + type: string + sourceSubType: + $ref: '#/components/schemas/Identifiable' + actions: + type: object + required: + - sourceDetails + properties: + sourceDetails: + $ref: '#/components/schemas/Action' + Industry: + type: object + description: Company industry information. + properties: + id: + type: string + label: + type: string + OfferPropertiesCategory: + type: object + properties: + id: + type: string + properties: + type: array + items: + $ref: '#/components/schemas/OfferPropertyDefinition' + OfferPropertyDefinition: + type: object + properties: + key: + type: string + label: + type: string + required: + type: boolean + type: + type: string + enum: + - BOOLEAN + - COUNTRY + - CURRENCY + - DATE + - NUMBER + - PERCENT + - REGION + - TEXT + - USER + - SELECT + CandidatePropertyAvailability: + type: object + properties: + toUsers: + type: string + enum: + - ALL + - FULL_ACCESS + context: + type: array + items: + type: string + enum: + - HIRE_FORM + - OFFER_FORM + - PROFILE + - OFFER_APPROVAL_FORM + forOrgFields: + type: array + items: + $ref: '#/components/schemas/CandidatePropertyFilter' + CandidatePropertyFilter: + type: object + properties: + id: + type: string + values: + $ref: '#/components/schemas/CandidatePropertyFilterValues' + actions: + $ref: '#/components/schemas/Actions' + CandidatePropertyFilterValues: + type: object + properties: + all: + type: boolean + content: + type: array + items: + type: string + LanguageCode: + type: string + enum: + - af + - am + - ar + - hy + - az + - eu + - bn + - bg + - ca + - zh-CN + - zh-TW + - hr + - cs + - da + - nl + - en-GB + - en + - et + - fi + - fr + - fr-CA + - gl + - ka + - de + - el + - gu + - iw + - hi + - hu + - is + - id + - ga + - it + - ja + - kn + - km + - ko + - lo + - lv + - lt + - ms + - ml + - mr + - mn + - ne + - 'no' + - fa + - fil + - pl + - pt + - pt-BR + - pt-PT + - ro + - ru + - sr + - si + - sk + - sl + - es + - es-MX + - sw + - sv + - ta + - te + - tr + - uk + - ur + - vi + - cy + - zu + description: >- + Language code, can be two-letter for the standard variant or with + additional two letters after a hyphen to identify a specific locale + + + Value "pt-PT" is deprecated and will not work, use "pt" instead. + default: en + Identifiable: + type: object + required: + - id + properties: + id: + type: string + minLength: 1 + maxLength: 256 + Labeled: + type: object + required: + - label + properties: + label: + type: string + minLength: 1 + LabelTranslations: + type: array + items: + $ref: '#/components/schemas/LabelTranslation' + LabelTranslation: + type: object + properties: + label: + type: string + minLength: 1 + maxLength: 200 + language: + $ref: '#/components/schemas/LanguageCode' + required: + - label + - language + JSONPatch: + type: array + items: + type: object + description: one JSON Patch operation + allOf: + - description: Members common to all operations + type: object + required: + - op + - path + properties: + path: + $ref: '#/components/schemas/jsonPointer' + - $ref: '#/components/schemas/oneOperation' + oneOf: + - type: object + required: + - op + - value + properties: + op: + type: string + enum: + - add + - replace + - test + value: {} + - type: object + required: + - op + - from + properties: + op: + type: string + enum: + - move + - copy + from: + $ref: '#/components/schemas/jsonPointer' + - type: object + required: + - op + properties: + op: + type: string + enum: + - remove + example: + - path: /path + op: add + value: example + - path: /path + op: move + from: /origin + - path: /path + op: remove + path: + required: + - path + properties: + path: + $ref: '#/components/schemas/jsonPointer' + jsonPointer: + type: string + pattern: ^(/[^/~]*(~[01][^/~]*)*)*$ + FeedBrand: + type: object + properties: + id: + type: string + name: + type: string + logo: + type: string + FeedBudget: + type: object + properties: + price: + type: string + FeedBudgeting: + type: object + properties: + programmatic: + $ref: '#/components/schemas/FeedBudget' + FeedCompany: + type: object + properties: + cid: + type: string + name: + type: string + identifier: + type: string + FeedCompensation: + type: object + properties: + minimum: + type: string + maximum: + type: string + currency: + type: string + FeedDictionaryEntry: + type: object + properties: + id: + type: string + label: + type: string + FeedJobAd: + type: object + properties: + id: + type: string + uuid: + type: string + name: + type: string + refNumber: + type: string + status: + type: string + jobAdUrl: + type: string + liveUrl: + type: string + applyUrl: + type: string + comment: + type: string + postedDate: + type: string + location: + $ref: '#/components/schemas/FeedLocation' + company: + $ref: '#/components/schemas/FeedCompany' + brand: + $ref: '#/components/schemas/FeedBrand' + creator: + $ref: '#/components/schemas/FeedUser' + budget: + $ref: '#/components/schemas/FeedBudgeting' + compensation: + $ref: '#/components/schemas/FeedCompensation' + industry: + $ref: '#/components/schemas/FeedDictionaryEntry' + function: + $ref: '#/components/schemas/FeedDictionaryEntry' + experienceLevel: + $ref: '#/components/schemas/FeedDictionaryEntry' + typeOfEmployment: + $ref: '#/components/schemas/FeedDictionaryEntry' + languageCode: + type: string + jobAd: + $ref: '#/components/schemas/FeedJobAdDetails' + FeedJobAdDetails: + type: object + properties: + companyDescription: + type: string + jobDescription: + type: string + qualifications: + type: string + additionalInformation: + type: string + FeedLocation: + type: object + properties: + city: + type: string + region: + type: string + regionCode: + type: string + country: + type: string + countryCode: + type: string + address: + type: string + zipCode: + type: string + longitude: + type: string + latitude: + type: string + remote: + type: boolean + FeedUser: + type: object + properties: + firstName: + type: string + lastName: + type: string + email: + type: string + FeedPublication: + type: object + properties: + Provider: + type: string + offset: + type: string + description: int32 + limit: + type: string + description: int32 + totalFound: + type: string + description: int64 + jobs: + type: array + items: + $ref: '#/components/schemas/FeedJobAd' + PostingUpdateRequest: + type: object + properties: + liveUrl: + type: string + status: + type: string + comment: + type: string + UserId: + type: string + pattern: '[a-fA-F0-9]{24}' + description: Id of a user from User API + UuidReadOnly: + readOnly: true + type: string + format: guid + InterviewToUpdateInput: + type: object + properties: + location: + type: string + maxLength: 500 + timezone: + type: string + maxLength: 100 + description: Name of the timezone as described in TZ database + candidate: + $ref: '#/components/schemas/AttendeeStatus' + InterviewsList: + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/Interview' + Interview: + type: object + required: + - candidate + - jobId + - organizerId + - timezone + - timeslots + properties: + id: + $ref: '#/components/schemas/UuidReadOnly' + candidate: + $ref: '#/components/schemas/Candidate' + jobId: + $ref: '#/components/schemas/Uuid' + location: + type: string + maxLength: 500 + organizerId: + $ref: '#/components/schemas/UserId' + timezone: + type: string + description: Name of the timezone as described in TZ database + maxLength: 100 + timeslots: + $ref: '#/components/schemas/Timeslots' + createdOn: + type: string + format: date-time + description: If not set it defaults to current time + refUrl: + type: string + format: url + source: + type: string + readOnly: true + Timeslot: + type: object + required: + - startsOn + - endsOn + - interviewers + properties: + id: + $ref: '#/components/schemas/UuidReadOnly' + interviewType: + $ref: '#/components/schemas/InterviewType' + title: + type: string + maxLength: 200 + place: + type: string + maxLength: 500 + startsOn: + type: string + format: date-time + endsOn: + type: string + format: date-time + interviewers: + $ref: '#/components/schemas/Interviewers' + candidateStatus: + $ref: '#/components/schemas/AttendeeStatusValue' + Timeslots: + type: array + minItems: 1 + maxItems: 50 + items: + $ref: '#/components/schemas/Timeslot' + Interviewers: + type: array + minItems: 1 + maxItems: 50 + items: + $ref: '#/components/schemas/Interviewer' + Interviewer: + type: object + required: + - id + - status + properties: + id: + $ref: '#/components/schemas/UserId' + status: + $ref: '#/components/schemas/AttendeeStatusValue' + AttendeeStatusValue: + type: string + enum: + - accepted + - declined + - pending + - tentative + CandidateAttendeeStatusValue: + type: string + nullable: true + enum: + - accepted + - declined + - pending + - tentative + - null + deprecated: true + description: This property is deprecated. Use 'timeslot.candidateStatus' instead. + AttendeeStatus: + type: object + required: + - status + properties: + status: + $ref: '#/components/schemas/AttendeeStatusValue' + InterviewType: + type: string + maxLength: 400 + InterviewTypes: + type: array + minItems: 1 + maxItems: 2000 + items: + $ref: '#/components/schemas/InterviewType' + JobPositions: + type: object + required: + - totalFound + - content + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/JobPosition' + JobPosition: + type: object + required: + - id + properties: + id: + type: string + positionId: + type: string + type: + type: string + incumbentName: + type: string + positionOpenDate: + type: string + format: date-time + targetStartDate: + type: string + format: date-time + status: + type: string + JobPositionInput: + type: object + required: + - type + - positionOpenDate + - targetStartDate + properties: + positionId: + type: string + incumbentName: + type: string + type: + type: string + enum: + - NEW + - REPLACEMENT + positionOpenDate: + type: string + format: date-time + targetStartDate: + type: string + format: date-time + JobAdContent: + type: object + required: + - title + properties: + title: + type: string + format: title + minLength: 1 + language: + $ref: '#/components/schemas/JobAdLanguage' + jobAd: + $ref: '#/components/schemas/JobAdSections' + JobAds: + type: array + items: + $ref: '#/components/schemas/JobAdItem' + JobAdItem: + type: object + required: + - id + - title + - language + - jobAd + - createdOn + - updatedOn + - postingStatus + - default + - actions + - creator + - visibility + properties: + id: + type: string + title: + type: string + language: + $ref: '#/components/schemas/Language' + jobAd: + $ref: '#/components/schemas/JobAdSections' + createdOn: + type: string + format: date-time + updatedOn: + type: string + format: date-time + applyUrl: + type: string + format: url + postingStatus: + type: string + enum: + - PUBLISHED + - NOT_PUBLISHED + default: + type: boolean + actions: + type: object + required: + - postings + properties: + postings: + $ref: '#/components/schemas/Action' + creator: + $ref: '#/components/schemas/Identifiable' + visibility: + type: string + enum: + - PUBLIC + - INTERNAL + - PRIVATE + Publication: + type: object + properties: + aggregators: + type: boolean + default: true + visibility: + type: string + default: PUBLIC + enum: + - PUBLIC + - INTERNAL + JobAdPublicationScheduled: + type: object + properties: + postingStatus: + type: string + enum: + - PENDING + JobAdUnpublishScheduled: + type: object + properties: + unpostingStatus: + type: string + enum: + - PENDING + HeadcountUpdateAccepted: + type: object + properties: + status: + type: string + enum: + - PENDING + HeadcountPatchRequest: + type: object + properties: + salaryRange: + $ref: '#/components/schemas/SalaryRange' + PublicationList: + type: object + required: + - content + properties: + content: + type: array + items: + $ref: '#/components/schemas/PublicationListItem' + HiringTeamMembers: + type: object + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/HiringTeamMemberResponse' + HiringTeamMemberRole: + type: string + enum: + - HIRING_MANAGER + - INTERVIEW_TEAM + - RECRUITER + - EXECUTIVE + - COORDINATOR + HiringTeamMember: + allOf: + - $ref: '#/components/schemas/Identifiable' + - type: object + required: + - role + properties: + role: + anyOf: + - $ref: '#/components/schemas/HiringTeamMemberRole' + - type: string + HiringTeamMemberResponse: + allOf: + - $ref: '#/components/schemas/HiringTeamMember' + - type: object + properties: + actions: + type: object + required: + - details + properties: + details: + $ref: '#/components/schemas/Action' + JobNote: + type: object + required: + - content + properties: + content: + type: string + maxLength: 20000 + JobInput: + type: object + required: + - title + - function + - industry + - experienceLevel + - location + properties: + title: + type: string + minLength: 1 + maxLength: 256 + format: title + refNumber: + type: string + maxLength: 63 + targetHiringDate: + type: string + format: date-time + department: + $ref: '#/components/schemas/Identifiable' + location: + $ref: '#/components/schemas/JobLocationInput' + industry: + $ref: '#/components/schemas/Identifiable' + function: + $ref: '#/components/schemas/Identifiable' + typeOfEmployment: + $ref: '#/components/schemas/Identifiable' + experienceLevel: + $ref: '#/components/schemas/Identifiable' + eeoCategory: + $ref: '#/components/schemas/Identifiable' + template: + type: boolean + compensation: + $ref: '#/components/schemas/Compensation' + jobAd: + $ref: '#/components/schemas/JobAd' + properties: + type: array + items: + $ref: '#/components/schemas/JobPropertyInput' + Jobs: + type: object + properties: + limit: + type: integer + offset: + type: integer + nextPageId: + type: string + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/JobSummary' + JobSummary: + allOf: + - $ref: '#/components/schemas/Job' + - type: object + properties: + language: + $ref: '#/components/schemas/Language' + actions: + type: object + required: + - details + properties: + details: + $ref: '#/components/schemas/Action' + JobDetails: + allOf: + - $ref: '#/components/schemas/Job' + - type: object + properties: + targetHiringDate: + type: string + format: date-time + industry: + $ref: '#/components/schemas/Property' + function: + $ref: '#/components/schemas/Property' + typeOfEmployment: + $ref: '#/components/schemas/Property' + experienceLevel: + $ref: '#/components/schemas/Property' + eeoCategory: + $ref: '#/components/schemas/Property' + template: + type: boolean + creator: + $ref: '#/components/schemas/UserIdentity' + compensation: + $ref: '#/components/schemas/Compensation' + jobAd: + $ref: '#/components/schemas/JobAdInput' + properties: + type: array + items: + $ref: '#/components/schemas/JobProperty' + actions: + type: object + properties: + hiringTeam: + $ref: '#/components/schemas/Action' + publications: + $ref: '#/components/schemas/Action' + positions: + $ref: '#/components/schemas/Action' + applyOnWeb: + $ref: '#/components/schemas/Action' + details: + $ref: '#/components/schemas/Action' + JobLocationInput: + type: object + required: + - city + - countryCode + properties: + countryCode: + type: string + minLength: 2 + maxLength: 2 + regionCode: + type: string + minLength: 1 + maxLength: 256 + region: + type: string + minLength: 1 + maxLength: 256 + address: + type: string + minLength: 1 + maxLength: 2000 + postalCode: + type: string + minLength: 1 + maxLength: 32 + city: + type: string + minLength: 1 + maxLength: 128 + remote: + type: boolean + JobAdInput: + type: object + properties: + sections: + $ref: '#/components/schemas/JobAdSections' + language: + $ref: '#/components/schemas/Language' + JobPropertyInput: + allOf: + - $ref: '#/components/schemas/Identifiable' + - type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/JobPropertyValue' + JobStatusHistory: + type: object + required: + - totalFound + - content + properties: + totalFound: + type: integer + content: + type: array + items: + type: object + required: + - status + properties: + changedOn: + type: string + format: date-time + status: + $ref: '#/components/schemas/JobStatus' + actions: + type: object + required: + - user + properties: + user: + $ref: '#/components/schemas/Action' + JobAdLanguage: + type: object + required: + - code + properties: + code: + $ref: '#/components/schemas/LanguageCode' + JobAdSections: + type: object + properties: + companyDescription: + $ref: '#/components/schemas/JobAdSection' + jobDescription: + $ref: '#/components/schemas/JobAdSection' + qualifications: + $ref: '#/components/schemas/JobAdSection' + additionalInformation: + $ref: '#/components/schemas/JobAdSection' + videos: + $ref: '#/components/schemas/JobAdVideos' + sections: + type: object + properties: + companyDescription: + $ref: '#/components/schemas/JobAdSection' + jobDescription: + $ref: '#/components/schemas/JobAdSection' + qualifications: + $ref: '#/components/schemas/JobAdSection' + additionalInformation: + $ref: '#/components/schemas/JobAdSection' + videos: + $ref: '#/components/schemas/JobAdVideosSection' + JobAdSection: + type: object + properties: + title: + type: string + text: + type: string + maxLength: 24999 + JobAdVideos: + type: object + properties: + urls: + type: array + items: + type: string + format: video_url + PublicationListItem: + type: object + required: + - sourceName + - type + - publishedOn + properties: + sourceName: + type: string + type: + type: string + publishedOn: + type: string + format: date-time + unpublishedOn: + type: string + format: date-time + JobStatusUpdate: + type: object + required: + - status + properties: + status: + $ref: '#/components/schemas/ValidJobStatus' + ValidJobStatus: + type: string + enum: + - CREATED + - SOURCING + - FILLED + - INTERVIEW + - OFFER + - CANCELLED + - ON_HOLD + JobStatus: + type: string + enum: + - CREATED + - SOURCING + - FILLED + - INTERVIEW + - OFFER + - CANCELLED + - ON_HOLD + - OTHER + PostingStatus: + type: string + enum: + - PUBLIC + - INTERNAL + - NOT_PUBLISHED + - PRIVATE + Compensation: + type: object + properties: + min: + type: number + format: double + max: + type: number + format: double + currency: + type: string + JobAd: + type: object + properties: + sections: + $ref: '#/components/schemas/JobAdSections' + language: + $ref: '#/components/schemas/Language' + Language: + type: object + required: + - code + properties: + code: + type: string + label: + type: string + labelNative: + type: string + JobProperty: + type: object + required: + - id + - value + properties: + id: + type: string + minLength: 1 + label: + type: string + value: + $ref: '#/components/schemas/JobPropertyValue' + JobPropertyValue: + type: object + properties: + id: + type: string + minLength: 1 + maxLength: 256 + label: + type: string + UserIdentity: + type: object + properties: + id: + type: string + firstName: + type: string + lastName: + type: string + JobApproval: + type: object + properties: + approvalRequestId: + type: string + positions: + type: array + items: + $ref: '#/components/schemas/JobApprovalPosition' + salaryRange: + $ref: '#/components/schemas/SalaryRange' + SalaryRange: + type: object + properties: + min: + type: number + format: double + max: + type: number + format: double + currency: + type: string + JobApprovalPosition: + type: object + properties: + id: + type: string + positionId: + type: string + type: + type: string + incumbentName: + type: string + positionOpenDate: + type: string + format: date-time + targetStartDate: + type: string + format: date-time + status: + type: string + JobApplication: + type: object + properties: + status: + $ref: '#/components/schemas/JobApplicationStatus' + subStatus: + type: string + sourceIdentifier: + $ref: '#/components/schemas/Uuid' + createDate: + type: string + format: date-time + profileId: + $ref: '#/components/schemas/Uuid' + jobId: + $ref: '#/components/schemas/Uuid' + JobApplicationStatus: + type: string + enum: + - LEAD + - NEW + - IN_REVIEW + - INTERVIEW + - OFFERED + - HIRED + - REJECTED + - WITHDRAWN + - TRANSFERRED + Message: + type: object + required: + - content + properties: + content: + type: string + description: Content of the message + minLength: 1 + maxLength: 10000 + correlationId: + type: string + description: >- + CorrelationId is an optional parameter for you to add an additional + ID reference to the note. This will simply be appended onto the note + and will not be tracked/managed/process by SmartRecruiters in any + way. + shareWith: + $ref: '#/components/schemas/ShareWith' + MessageDetails: + type: object + properties: + id: + type: string + shareRequired: + type: boolean + MessagesView: + type: array + items: + $ref: '#/components/schemas/MessageView' + MessageView: + type: object + properties: + content: + type: string + createdOn: + type: string + format: date-time + visibility: + $ref: '#/components/schemas/Visibility' + authorId: + type: string + context: + $ref: '#/components/schemas/Context' + Context: + type: object + properties: + applications: + $ref: '#/components/schemas/Applications' + Applications: + type: array + items: + $ref: '#/components/schemas/Application' + Visibility: + type: string + enum: + - PUBLIC + - INTERNAL + ShareWith: + type: object + description: Sharing and message visibility options + properties: + users: + type: array + items: + type: string + description: List of users to share the message with + hiringTeamOf: + type: array + items: + type: string + description: List of jobs to share the message with its hiring teams + everyone: + type: boolean + description: Set the message to be visible to everyone in a company + openNote: + type: boolean + description: >- + Set the message to be visible to everyone in a company who has + access to #-tagged candidate + Offers: + type: object + required: + - totalFound + - content + properties: + limit: + type: integer + offset: + type: integer + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/Offer' + Offer: + type: object + required: + - id + - status + - createdOn + - updatedOn + - actions + properties: + id: + type: string + status: + type: string + enum: + - CREATED + - PENDING_APPROVAL + - APPROVED + - NOT_APPROVED + - PENDING_ACCEPTANCE + - ACCEPTED + - NOT_ACCEPTED + - ABANDONED + createdOn: + type: string + format: date-time + updatedOn: + type: string + format: date-time + properties: + type: object + additionalProperties: + type: string + actions: + type: object + required: + - candidate + - details + properties: + candidate: + $ref: '#/components/schemas/Action' + job: + $ref: '#/components/schemas/Action' + details: + $ref: '#/components/schemas/Action' + OfferDocument: + type: object + properties: + id: + description: Id of the document + type: string + format: uuid + name: + description: Name of the document + type: string + createdDate: + description: 'Date when the document was created Format: yyyy-MM-ddTHH:mm:ss.SSSZZ' + type: string + format: date-time + OfferDocumentsList: + type: object + properties: + documents: + type: array + items: + $ref: '#/components/schemas/OfferDocument' + isCurrentlySyncing: + description: >- + Indicates if the documents are currently being synced with the + provider. If true, the documents list may be subject to change. + type: boolean + provider: + description: >- + Name of the provider that the documents are synced with. Currently + only DOCUSIGN is supported. + type: string + enum: + - DOCUSIGN + ApiAssessmentComment: + required: + - message + type: object + properties: + id: + type: string + createDate: + type: string + format: date-time + message: + pattern: .*\S+.* + type: string + messageToCandidate: + pattern: .*\S+.* + type: string + assessmentURL: + type: string + author: + $ref: '#/components/schemas/ApiContactPerson' + ApiContactPerson: + type: object + properties: + firstName: + type: string + lastName: + type: string + email: + type: string + phone: + type: string + ApiCommentRequest: + required: + - message + type: object + properties: + message: + pattern: .*\S+.* + type: string + messageToCandidate: + pattern: .*\S+.* + type: string + assessmentURL: + type: string + author: + $ref: '#/components/schemas/ApiContactPerson' + ApiAssessmentCommentListResult: + type: object + properties: + limit: + type: integer + format: int64 + offset: + type: integer + format: int64 + totalFound: + type: integer + format: int64 + content: + type: array + items: + $ref: '#/components/schemas/ApiAssessmentComment' + ApiAssessmentAttachment: + type: object + properties: + id: + type: string + createDate: + type: string + format: date-time + lastUpdateDate: + type: string + format: date-time + fileName: + type: string + ApiAttachment: + required: + - attachment + type: object + properties: + attachment: + type: string + format: binary + ApiAssessmentAttachmentListResult: + type: object + properties: + limit: + type: integer + format: int64 + offset: + type: integer + format: int64 + totalFound: + type: integer + format: int64 + content: + type: array + items: + $ref: '#/components/schemas/ApiAssessmentAttachment' + ApiAssessmentResult: + required: + - description + - title + type: object + properties: + id: + type: string + createDate: + type: string + format: date-time + title: + type: string + description: + type: string + passed: + type: boolean + score: + type: string + author: + $ref: '#/components/schemas/ApiContactPerson' + result: + type: string + resultType: + type: string + enum: + - DOCUMENT + - VIDEO_STREAM + - VIDEO_URL + - URL + - GENERATED_URL + ApiAssessmentResultListResult: + type: object + properties: + limit: + type: integer + format: int64 + offset: + type: integer + format: int64 + totalFound: + type: integer + format: int64 + content: + type: array + items: + $ref: '#/components/schemas/ApiAssessmentResult' + ApiAssessmentOrder: + required: + - candidate + - company + - job + - offer + - requestor + type: object + properties: + id: + type: string + status: + type: string + enum: + - NEW + - IN_PROGRESS + - REJECTED + - COMPLETED + createDate: + type: string + format: date-time + lastUpdateDate: + type: string + format: date-time + requestor: + $ref: '#/components/schemas/ApiContactPerson' + candidate: + $ref: '#/components/schemas/ApiCandidate' + job: + $ref: '#/components/schemas/ApiJob' + company: + $ref: '#/components/schemas/ApiCompany' + offer: + $ref: '#/components/schemas/ApiOffer' + ApiAvailability: + type: object + properties: + expirationDate: + type: string + format: date-time + industries: + type: array + items: + $ref: '#/components/schemas/ApiIndustry' + locations: + type: array + items: + $ref: '#/components/schemas/ApiLocation' + companies: + type: array + items: + type: string + specialOffer: + type: string + ApiCandidate: + type: object + properties: + id: + type: string + uuid: + type: string + firstName: + type: string + lastName: + type: string + email: + type: string + phone: + type: string + addressLine: + type: string + ApiCompany: + type: object + properties: + id: + type: string + name: + type: string + ApiExperienceLevel: + type: object + properties: + id: + type: string + label: + type: string + ApiFunction: + type: object + properties: + id: + type: string + label: + type: string + ApiIndustry: + type: object + properties: + id: + type: string + label: + type: string + ApiJob: + type: object + properties: + id: + type: string + uuid: + type: string + name: + type: string + industry: + $ref: '#/components/schemas/ApiIndustry' + function: + $ref: '#/components/schemas/ApiFunction' + experienceLevel: + $ref: '#/components/schemas/ApiExperienceLevel' + location: + $ref: '#/components/schemas/ApiLocation' + ApiLocation: + type: object + properties: + country: + type: string + region: + type: string + city: + type: string + ApiOffer: + required: + - catalogId + - description + - name + - terms + type: object + properties: + id: + type: string + createDate: + type: string + format: date-time + lastUpdateDate: + type: string + format: date-time + catalogId: + pattern: .*\S+.* + type: string + name: + pattern: .*\S+.* + type: string + description: + pattern: .*\S+.* + type: string + category: + type: string + terms: + $ref: '#/components/schemas/ApiTerms' + status: + type: string + enum: + - ACTIVE + - INACTIVE + - UNDER_REVIEW + - REJECTED + targetMarket: + $ref: '#/components/schemas/ApiTargetMarket' + availability: + $ref: '#/components/schemas/ApiAvailability' + ApiTargetMarket: + type: object + properties: + industries: + type: array + items: + $ref: '#/components/schemas/ApiIndustry' + functions: + type: array + items: + $ref: '#/components/schemas/ApiFunction' + experienceLevels: + type: array + items: + $ref: '#/components/schemas/ApiExperienceLevel' + locations: + type: array + items: + $ref: '#/components/schemas/ApiLocation' + ApiTerms: + required: + - price + type: object + properties: + type: + type: string + enum: + - REFERENCE_CHECK + - BEHAVIORAL_ASSESSMENT + - BACKGROUND_CHECK + - VIDEO_INTERVIEW + - SKILLS_TEST + - INLINE_ASSESSMENT + price: + $ref: '#/components/schemas/Money' + postingPeriod: + type: integer + format: int32 + costPerClick: + $ref: '#/components/schemas/Money' + existingContract: + type: object + additionalProperties: + type: object + Money: + required: + - amount + type: object + properties: + amount: + minimum: 0 + exclusiveMinimum: false + type: number + currencyCode: + type: string + ApiAssessmentOrderListResult: + type: object + properties: + limit: + type: integer + format: int64 + offset: + type: integer + format: int64 + totalFound: + type: integer + format: int64 + content: + type: array + items: + $ref: '#/components/schemas/ApiAssessmentOrder' + ApiAssessmentOrderRequest: + type: object + properties: + status: + type: string + enum: + - NEW + - IN_PROGRESS + - REJECTED + - COMPLETED + requestor: + $ref: '#/components/schemas/ApiContactPerson' + candidate: + $ref: '#/components/schemas/ApiCandidate' + job: + $ref: '#/components/schemas/ApiJob' + company: + $ref: '#/components/schemas/ApiCompany' + offer: + $ref: '#/components/schemas/ApiOffer' + Config: + required: + - id + type: object + properties: + id: + pattern: .*\S+.* + type: string + value: + type: string + ApiConfigListResult: + type: object + properties: + limit: + type: integer + format: int64 + offset: + type: integer + format: int64 + totalFound: + type: integer + format: int64 + content: + type: array + items: + $ref: '#/components/schemas/Config' + ApiListResult: + type: object + properties: + limit: + type: integer + format: int64 + offset: + type: integer + format: int64 + totalFound: + type: integer + format: int64 + content: + type: array + items: + type: object + ApiListResultApiOffer: + type: object + properties: + limit: + type: integer + format: int64 + offset: + type: integer + format: int64 + totalFound: + type: integer + format: int64 + content: + type: array + items: + $ref: '#/components/schemas/ApiOffer' + PostingList: + type: object + properties: + totalFound: + type: integer + limit: + type: integer + offset: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/PostingItem' + PostingItem: + type: object + properties: + id: + type: string + uuid: + type: string + name: + type: string + jobAdId: + type: string + format: uuid + defaultJobAd: + type: boolean + refNumber: + type: string + company: + $ref: '#/components/schemas/Company' + releasedDate: + type: string + format: date-time + location: + $ref: '#/components/schemas/PostingLocation' + industry: + $ref: '#/components/schemas/Industry' + department: + $ref: '#/components/schemas/Department' + function: + $ref: '#/components/schemas/Function' + typeOfEmployment: + $ref: '#/components/schemas/TypeOfEmployment' + experienceLevel: + $ref: '#/components/schemas/ExperienceLevel' + customField: + type: array + items: + $ref: '#/components/schemas/CustomField' + ref: + type: string + creator: + $ref: '#/components/schemas/Creator' + language: + $ref: '#/components/schemas/Language' + visibility: + $ref: '#/components/schemas/Visibility' + Posting: + type: object + properties: + id: + type: string + uuid: + type: string + name: + type: string + jobId: + type: string + format: uuid + jobAdId: + type: string + format: uuid + defaultJobAd: + type: boolean + applyUrl: + type: string + postingUrl: + type: string + referralUrl: + type: string + refNumber: + type: string + company: + $ref: '#/components/schemas/Company' + releasedDate: + type: string + format: date-time + location: + $ref: '#/components/schemas/PostingLocation' + industry: + $ref: '#/components/schemas/Industry' + department: + $ref: '#/components/schemas/Department' + function: + $ref: '#/components/schemas/Function' + typeOfEmployment: + $ref: '#/components/schemas/TypeOfEmployment' + experienceLevel: + $ref: '#/components/schemas/ExperienceLevel' + customField: + type: array + items: + $ref: '#/components/schemas/CustomField' + ref: + type: string + creator: + $ref: '#/components/schemas/Creator' + jobAd: + $ref: '#/components/schemas/JobAdSections' + active: + type: boolean + visibility: + $ref: '#/components/schemas/Visibility' + Company: + type: object + properties: + identifier: + type: string + name: + type: string + PostingLocation: + type: object + properties: + country: + type: string + description: ISO 2-letter country code + region: + type: string + description: >- + This can be state, colloquial name, voivodeship or other area + description + city: + type: string + remote: + type: boolean + description: Indicates if employees can work remotely + latitude: + type: string + longitude: + type: string + Function: + type: object + properties: + id: + type: string + label: + type: string + TypeOfEmployment: + type: object + properties: + id: + type: string + label: + type: string + ExperienceLevel: + type: object + properties: + id: + type: string + enum: + - associate + - director + - entry_level + - executive + - internship + - mid_senior_level + - not_applicable + name: + type: string + CustomField: + type: object + properties: + fieldId: + type: string + fieldLabel: + type: string + valueId: + type: string + valueLabel: + type: string + Creator: + type: object + properties: + name: + type: string + JobAdLanguageCode: + type: string + enum: + - af + - am + - ar + - az + - bg + - bn + - ca + - cs + - cy + - da + - de + - el + - en + - en-GB + - es + - es-MX + - et + - eu + - fa + - fi + - fil + - fr + - fr-CA + - ga + - gl + - gu + - he + - hi + - hr + - hu + - hy + - id + - is + - it + - ja + - ka + - km + - kn + - ko + - lo + - lt + - lv + - ml + - mn + - mr + - ms + - ne + - nl + - 'no' + - pl + - pt + - pt-BR + - ro + - ru + - si + - sk + - sl + - sr + - sv + - sw + - ta + - te + - tr + - uk + - ur + - vi + - zh-CN + - zh-TW + - zu + JobAdVideosSection: + type: object + properties: + title: + type: string + urls: + type: array + items: + type: string + ApiBooleanValue: + type: object + properties: + value: + type: boolean + ApiColumnResponse: + type: object + properties: + entityTypeId: + type: string + entityInstanceId: + type: string + dataPointId: + type: string + dataPointInstanceId: + type: string + dataPointInstanceName: + type: string + dataPointName: + type: string + dataPointType: + type: string + enum: + - ID + - DATE + - NUMBER + - TEXT + - ENUM + - BOOLEAN + - DECIMAL + ApiDatePeriod: + required: + - period + - unit + type: object + properties: + period: + minimum: 1 + type: integer + format: int32 + unit: + type: string + enum: + - DAYS + - WEEKS + - MONTHS + - YEARS + fullPeriod: + type: boolean + ApiDateRange: + type: object + properties: + from: + type: string + format: date-time + to: + type: string + format: date-time + ApiFilterResponse: + type: object + properties: + column: + $ref: '#/components/schemas/ApiColumnResponse' + dateRange: + $ref: '#/components/schemas/ApiDateRange' + datePeriod: + $ref: '#/components/schemas/ApiDatePeriod' + rowValues: + $ref: '#/components/schemas/ApiRowValues' + booleanValue: + $ref: '#/components/schemas/ApiBooleanValue' + ApiReportFileResponse: + type: object + properties: + reportFileId: + type: string + reportId: + type: string + reportFileStatus: + type: string + enum: + - PENDING + - RUNNING + - COMPLETED + - FAILED + scheduleType: + type: string + enum: + - AD_HOC + - SCHEDULED + schedulingDate: + type: string + format: date-time + generationDate: + type: string + format: date-time + requestorId: + type: string + accessGroupId: + type: string + systemRoleId: + type: string + rowEntityTypeId: + type: string + rowEntityInstanceId: + type: string + columns: + type: array + items: + $ref: '#/components/schemas/ApiColumnResponse' + filters: + type: array + items: + $ref: '#/components/schemas/ApiFilterResponse' + errorReason: + type: string + enum: + - UNKNOWN + - MISSING_ACCESS_GROUP + - ACCESS_GROUP_MISMATCH + - MISSING_SYSTEM_ROLE + - SYSTEM_ROLE_MISMATCH + - REPORTING_AREA_RESTRICTED + - INCORRECT_ACCESS_CONFIGURATION + - MISSING_REPORT_CREATOR_EMPLOYEE + ApiRowValues: + required: + - values + type: object + properties: + noneValue: + type: boolean + values: + maxItems: 100 + minItems: 0 + type: array + items: + maxLength: 256 + minLength: 1 + type: string + ApiReportResponse: + type: object + properties: + reportId: + type: string + name: + type: string + rowEntityTypeId: + type: string + rowEntityInstanceId: + type: string + columns: + type: array + items: + $ref: '#/components/schemas/ApiColumnResponse' + filters: + type: array + items: + $ref: '#/components/schemas/ApiFilterResponse' + creationDate: + type: string + format: date-time + modificationDate: + type: string + format: date-time + creatorId: + type: string + modifierId: + type: string + grantees: + uniqueItems: true + type: array + items: + type: string + schedule: + $ref: '#/components/schemas/ApiSchedule' + reportTemplateId: + type: string + reportFormats: + uniqueItems: true + type: array + items: + type: string + enum: + - CSV + - EXCEL + accessGroupId: + type: string + systemRoleId: + type: string + ApiSchedule: + required: + - activityPeriod + - frequency + type: object + properties: + frequency: + type: string + enum: + - ANNUALLY + - MONTHLY + - WEEKLY + - DAILY + activityPeriod: + $ref: '#/components/schemas/ApiDateRange' + schedulingTime: + $ref: '#/components/schemas/ApiTimeRange' + ApiTime: + type: object + properties: + hour: + maximum: 23 + minimum: 0 + type: integer + format: int32 + minute: + maximum: 59 + minimum: 0 + type: integer + format: int32 + ApiTimeRange: + required: + - from + - to + type: object + properties: + from: + $ref: '#/components/schemas/ApiTime' + to: + $ref: '#/components/schemas/ApiTime' + zone: + type: string + ApiReportFilesResponse: + type: object + properties: + nextPage: + type: string + content: + type: array + items: + $ref: '#/components/schemas/ApiReportFileResponse' + ApiReportsResponse: + type: object + properties: + nextPage: + type: string + content: + type: array + items: + $ref: '#/components/schemas/ApiReportResponse' + Review: + type: object + properties: + id: + readOnly: true + $ref: '#/components/schemas/Uuid' + candidateId: + $ref: '#/components/schemas/Uuid' + jobId: + $ref: '#/components/schemas/Uuid' + reviewerId: + $ref: '#/components/schemas/UserId' + overallRating: + type: integer + comment: + type: string + createdOn: + type: string + format: date-time + updatedOn: + type: string + format: date-time + ReviewInput: + type: object + required: + - candidateId + - jobId + - overallRating + properties: + reviewerId: + $ref: '#/components/schemas/UserId' + candidateId: + $ref: '#/components/schemas/Uuid' + jobId: + $ref: '#/components/schemas/Uuid' + overallRating: + type: integer + minimum: 1 + maximum: 5 + comment: + type: string + createdOn: + type: string + format: date-time + ReviewToUpdateInput: + type: object + required: + - reviewerId + properties: + overallRating: + type: integer + minimum: 1 + maximum: 5 + comment: + type: string + reviewerId: + $ref: '#/components/schemas/UserId' + ActivityAssignmentAttachments: + type: object + required: + - attachmentIds + properties: + attachmentIds: + type: array + items: + $ref: '#/components/schemas/Uuid' + Assignments: + type: object + required: + - activityAssignments + - webFormAssignments + - fillablePdfFormAssignments + properties: + activityAssignments: + type: array + items: + $ref: '#/components/schemas/ActivityAssignment' + webFormAssignments: + type: array + items: + $ref: '#/components/schemas/WebFormAssignment' + fillablePdfFormAssignments: + type: array + items: + $ref: '#/components/schemas/FillablePdfFormAssignment' + ActivityAssignment: + type: object + required: + - id + - title + - description + - isFileUploadRequired + - hasSensitiveData + - isHighPriority + properties: + id: + $ref: '#/components/schemas/Uuid' + title: + type: string + description: + type: string + isFileUploadRequired: + type: boolean + hasSensitiveData: + type: boolean + isHighPriority: + type: boolean + WebFormAssignment: + type: object + required: + - id + - title + - description + - hasSensitiveData + - isHighPriority + properties: + id: + $ref: '#/components/schemas/Uuid' + title: + type: string + description: + type: string + hasSensitiveData: + type: boolean + isHighPriority: + type: boolean + FillablePdfFormAssignment: + type: object + required: + - id + - title + - description + - hasSensitiveData + - isHighPriority + - fileName + properties: + id: + $ref: '#/components/schemas/Uuid' + title: + type: string + description: + type: string + hasSensitiveData: + type: boolean + isHighPriority: + type: boolean + fileName: + type: string + WebFormFieldsMetadata: + type: object + required: + - fields + properties: + fields: + type: object + additionalProperties: + $ref: '#/components/schemas/WebFormFieldMetadata' + WebFormFieldMetadata: + type: object + required: + - type + - title + - isRequired + properties: + type: + type: string + title: + type: string + integrationKey: + type: string + hintText: + type: string + isRequired: + type: boolean + WebFormAnswers: + type: object + required: + - answers + properties: + answers: + $ref: '#/components/schemas/WebFormAnswer' + WebFormAnswer: + type: object + required: + - fieldId + - answerValue + properties: + fieldId: + type: string + integrationKey: + type: string + answerValue: + type: array + items: + type: string + NewHire: + type: object + required: + - id + - firstName + - lastName + - email + - socialMedia + properties: + id: + $ref: '#/components/schemas/Uuid' + firstName: + type: string + lastName: + type: string + email: + type: string + phone: + type: string + socialMedia: + $ref: '#/components/schemas/SocialMedia' + SocialMedia: + type: object + properties: + skype: + type: string + linkedIn: + type: string + facebook: + type: string + twitter: + type: string + website: + type: string + indeed: + type: string + OnboardingProcess: + type: object + required: + - id + - newHireId + - jobId + - applicationId + properties: + id: + $ref: '#/components/schemas/Uuid' + newHireId: + $ref: '#/components/schemas/Uuid' + employmentStartDate: + type: string + format: date + jobId: + $ref: '#/components/schemas/Uuid' + applicationId: + $ref: '#/components/schemas/Uuid' + SemanticErrorResponse: + type: object + properties: + message: + type: string + errors: + type: array + items: + $ref: '#/components/schemas/SemanticError' + SemanticError: + type: object + required: + - dataPath + - message + properties: + dataPath: + type: string + message: + type: string + LocationUpdateRequest: + type: object + description: >- + regionCode is not recommended to be used for countries other than the + United States. + properties: + countryCode: + type: string + minLength: 2 + maxLength: 2 + regionCode: + type: string + city: + type: string + minLength: 1 + address: + type: string + format: address + postalCode: + type: string + required: + - city + - countryCode + UserLanguageCode: + type: string + enum: + - bg + - cs + - da + - de + - el + - en + - es + - es-MX + - fi + - fr + - fr-CA + - hr + - hu + - id + - it + - ja + - lt + - nl + - 'no' + - pl + - pt + - pt-BR + - ro + - ru + - sk + - sl + - sr + - sv + - th + - tr + - uk + - vi + - zh-CN + - zh-TW + - ka + description: >- + Language assigned to user account. Language code, can be two-letter for + the standard variant or with additional two letters after a hyphen to + identify a specific locale + Users: + type: object + properties: + limit: + type: integer + nextPageId: + type: string + content: + type: array + items: + $ref: '#/components/schemas/UserListItem' + totalFound: + type: integer + offset: + type: integer + UserListItem: + allOf: + - $ref: '#/components/schemas/User' + - type: object + required: + - language + properties: + id: + type: string + active: + type: boolean + updatedOn: + type: string + format: date-time + User: + type: object + required: + - firstName + - lastName + - role + properties: + email: + type: string + format: email + firstName: + type: string + minLength: 1 + maxLength: 300 + format: name + lastName: + type: string + minLength: 1 + maxLength: 300 + format: name + systemRole: + $ref: '#/components/schemas/SystemRole' + externalData: + type: string + nullable: true + ssoIdentifier: + type: string + nullable: true + ssoLoginMode: + nullable: true + type: string + enum: + - SSO + - PASSWORD + description: >- + User level login mode setting. Possible values are: + + - SSO - user can login only through SSO + + - PASSWORD - user can login only by password + + + Notice: This setting _CAN_ be configured always, but it will be + respected only if: + + - SSO is enabled at company level + + - employee level SSO configuration functionality is enabled for + company + language: + type: object + required: + - code + properties: + code: + $ref: '#/components/schemas/UserLanguageCode' + role: + type: string + enum: + - EMPLOYEE + - RESTRICTED + - STANDARD + - EXTENDED + - ADMINISTRATOR + UserEntity: + allOf: + - required: + - language + - $ref: '#/components/schemas/User' + - type: object + properties: + id: + type: string + active: + type: boolean + updatedOn: + type: string + format: date-time + location: + $ref: '#/components/schemas/Location' + NewUser: + allOf: + - $ref: '#/components/schemas/User' + - type: object + properties: + ssoIdentifier: + type: string + maxLength: 100 + writeOnly: true + password: + type: string + writeOnly: true + location: + $ref: '#/components/schemas/LocationUpdateRequest' + SystemRoles: + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/SystemRole' + SystemRole: + type: object + required: + - id + properties: + id: + type: string + name: + type: string + AccessGroup: + type: object + properties: + id: + type: string + name: + type: string + AccessGroups: + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/AccessGroup' + UserIds: + type: array + maxItems: 5000 + items: + $ref: '#/components/schemas/UserId' + Seats: + type: array + description: >- + List of seat keys. Available values: smartPal, crm, recruitingAI, + textMessaging + items: + type: string + AnyValue: + anyOf: + - type: string + - type: number + - type: integer + - type: boolean + - type: array + items: {} + - type: object + add: + description: add operation. Value can be any JSON value. + properties: + op: + enum: + - add + value: + $ref: '#/components/schemas/AnyValue' + required: + - value + remove: + description: remove operation. Only a path is specified. + properties: + op: + enum: + - remove + replace: + description: replace operation. Value can be any JSON value. + properties: + op: + enum: + - replace + value: + $ref: '#/components/schemas/AnyValue' + required: + - value + move: + description: move operation. "from" is a JSON Pointer. + properties: + op: + enum: + - move + from: + $ref: '#/components/schemas/jsonPointer' + required: + - from + copy: + description: copy operation. "from" is a JSON Pointer. + properties: + op: + enum: + - copy + from: + $ref: '#/components/schemas/jsonPointer' + required: + - from + test: + description: test operation. Value can be any JSON value. + properties: + op: + enum: + - test + value: + $ref: '#/components/schemas/AnyValue' + required: + - value + oneOperation: + oneOf: + - $ref: '#/components/schemas/add' + - $ref: '#/components/schemas/remove' + - $ref: '#/components/schemas/replace' + - $ref: '#/components/schemas/move' + - $ref: '#/components/schemas/copy' + - $ref: '#/components/schemas/test' + JobWebhookPayload: + type: object + required: + - id + properties: + id: + type: string + JobAdWebhookPayload: + type: object + required: + - job_id + - job_ad_id + properties: + job_id: + type: string + job_ad_id: + type: string + JobAdPostingsWebhookPayload: + type: object + required: + - job_id + - job_ad_id + properties: + job_id: + type: string + job_ad_id: + type: string + PositionWebhookPayload: + type: object + required: + - job_id + - position_id + properties: + job_id: + type: string + position_id: + type: string + ApplicationWebhookPayload: + type: object + required: + - job_id + - candidate_id + - application_id + properties: + job_id: + type: string + candidate_id: + type: string + application_id: + type: string + ApplicationAttachmentWebhookPayload: + allOf: + - $ref: '#/components/schemas/ApplicationWebhookPayload' + - type: object + required: + - attachment_id + properties: + attachment_id: + type: string + CandidateWebhookPayload: + type: object + required: + - id + properties: + id: + type: string + OfferWebhookPayload: + type: object + required: + - job_id + - candidate_id + - offer_id + properties: + job_id: + type: string + candidate_id: + type: string + offer_id: + type: string + OfferApprovalWebhookPayload: + type: object + required: + - approval_id + - job_id + - candidate_id + - offer_id + properties: + approval_id: + type: string + job_id: + type: string + candidate_id: + type: string + offer_id: + type: string + JobApprovalWebhookPayload: + type: object + required: + - approval_id + - job_id + properties: + approval_id: + type: string + job_id: + type: string + SecretKeyPayload: + type: object + properties: + secretKey: + type: string + Subscriptions: + type: array + items: + $ref: '#/components/schemas/Subscription' + CallbackRequests: + type: array + items: + $ref: '#/components/schemas/CallbackRequest' + CallbackUrl: + type: string + format: https_url + example: https://server.com/send/callback/here + EmailAddress: + type: string + format: email + example: webhook.alerts@domain.com + CallbackAuthentication: + type: object + oneOf: + - $ref: '#/components/schemas/CallbackBasicAuth' + - $ref: '#/components/schemas/CallbackHeaderAuth' + - $ref: '#/components/schemas/CallbackOAuth2Auth' + example: + type: header + headerName: X-TOKEN + headerValue: J?7HSgUKm7!MPm+EKm^P4BwW4ywRRRVu + CallbackBasicAuth: + type: object + properties: + type: + type: string + enum: + - basic + username: + type: string + password: + type: string + example: + type: basic + username: basic-user + password: jVG8wzKZ%B+r_NkA + CallbackHeaderAuth: + type: object + properties: + type: + type: string + enum: + - header + headerName: + type: string + pattern: ^[Xx]- + description: Custom header name starting with "x-" + headerValue: + type: string + example: + type: header + username: token + password: J?7HSgUKm7!MPm+EKm^P4BwW4ywRRRVu + CallbackOAuth2Auth: + type: object + properties: + type: + type: string + enum: + - oauth2 + clientId: + type: string + description: OAuth2 client id used for token request + clientSecret: + type: string + description: OAuth2 client secret used for token request + tokenServiceUrl: + type: string + format: https_url + description: > + OAuth2 token service url. This serivce is expected to consume + `application/x-www-form-urlencoded` content + + type. The payload will consist of + + + `client_id=provided_client_id&client_secret=provided_client_secret&grant_type=client_credentials` + + + As a result, the service should return json containing information + about access token in form: + + + ``` + + { + access_token: 'access_token_value', + expires_in: 'amount_of_miliseconds' + } + + ```` + description: > + When `CallbackAuthentication` is set to `oauth2`, every call made to the + webhook callback url will incude header + + + `'authorization': Bearer access_token_value` + example: + type: oauth2 + clientId: oauth_client_123 + clientSecret: 9T{Z8OLl<~Si(=c + tokenServiceUrl: https://www.your-token-generator-service.com/tokens + Subscription: + type: object + properties: + id: + type: string + readOnly: true + callbackUrl: + $ref: '#/components/schemas/CallbackUrl' + events: + type: array + items: + $ref: '#/components/schemas/Event' + status: + type: string + readOnly: true + enum: + - inactive + - active + required: + - callbackUrl + - events + CallbackRequest: + type: object + properties: + status: + $ref: '#/components/schemas/CallbackRequestStatus' + timestamp: + description: > + Requests sent before timestamp. Format ISO8601: + yyyy-MM-ddTHH:mm:ss.SSSZZ + type: string + format: date-time + requestDetails: + description: details of callback request + type: object + properties: + url: + description: url to which callback was sent + type: string + body: + description: body of the request in form of stringified json. + type: string + headers: + description: headers set for the request + type: object + CallbackRequestStatus: + type: string + enum: + - successful + - failed + SubscriptionRequest: + type: object + properties: + callbackUrl: + $ref: '#/components/schemas/CallbackUrl' + events: + type: array + uniqueItems: true + minItems: 1 + items: + $ref: '#/components/schemas/EventName' + alertingEmailAddress: + $ref: '#/components/schemas/EmailAddress' + callbackAuthentication: + $ref: '#/components/schemas/CallbackAuthentication' + required: + - callbackUrl + - events + EventName: + type: string + enum: + - job.created + - job.updated + - job.status.updated + - job.hiring-team.updated + - job.ad.created + - job.ad.updated + - job.ad.postings.updated + - position.created + - position.updated + - position.deleted + - application.created + - application.status.updated + - application.fields.updated + - application.onboarding-status.updated + - application.attachment.created + - application.source.updated + - candidate.created + - candidate.updated + - candidate.deleted + - offer.created + - offer.updated + - offer.approval.created + - offer.approval.approved + - offer.approval.rejected + - offer.approval.abandoned + - offer.approval.step.approved + - offer.approval.step.rejected + - offer.approver.skipped + - offer.approver.delegated + - offer.approval.comment.created + - job.approval.created + - job.approval.approved + - job.approval.rejected + - job.approval.abandoned + - job.approval.step.approved + - job.approval.step.rejected + - job.approver.skipped + - job.approver.delegated + - job.approval.comment.created + - review.created + - review.updated + - review.deleted + - application.screening-answers.created + - application.screening-answers.updated + - onboarding.process.started + - onboarding.assignments.high-priority.completed + - onboarding.assignments.completed + ReviewWebhookPayload: + type: object + required: + - application_id + - review_id + properties: + application_id: + type: string + review_id: + type: string + ScreeningQuestionsAnswersWebhookPayload: + type: object + required: + - job_id + - candidate_id + - application_id + properties: + job_id: + type: string + candidate_id: + type: string + application_id: + type: string + OnboardingProcessWebhookPayload: + type: object + required: + - onboarding_process_id + - new_hire_id + properties: + onboarding_process_id: + type: string + new_hire_id: + type: string + OnboardingHighPriorityAssignmentsCompletedWebhookPayload: + type: object + required: + - onboarding_process_id + - new_hire_id + properties: + onboarding_process_id: + type: string + new_hire_id: + type: string + OnboardingAssignmentsCompletedWebhookPayload: + type: object + required: + - onboarding_process_id + - new_hire_id + properties: + onboarding_process_id: + type: string + new_hire_id: + type: string + securitySchemes: + key: + type: apiKey + name: x-smarttoken + in: header + oauth: + type: oauth2 + flows: + authorizationCode: + authorizationUrl: https://www.smartrecruiters.com/identity/oauth/allow + tokenUrl: https://api.smartrecruiters.com/identity/oauth/token + scopes: + approvals_read: Access Approval Requests + approvals_create: Create Approval Requests + approvals_decide: Approve or Reject Approval Requests + assessment_orders_read: Access Assessment Orders + audit_events_read: Access Audit Events + candidates_read: Access Candidates + candidates_create: Create Candidates + candidates_offers_read: Access Offer Terms + candidates_manage: Manage Candidate Status and Properties + candidate_status_read: Access Candidate's status + configuration_read: Access Company Settings + configuration_manage: Manage Company Settings + company_read: Access Company Information + interviews_read: Access Interviews and Timeslots + interviews_write: Create, update and delete Interviews and Timeslots + interview_types_read: Access Interview Types + interview_types_write: Create and delete Interview Types + jobs_read: Access Jobs + jobs_manage: Manage jobs + jobs_publications_manage: Publish Jobs + job_applications_read: Access Job Applications + messages_write: Message Users + messages_manage: Manage Messages + messages_read: Access Messages + reporting_read: Get analytics reports and download report files + reporting_write: Manage/execute analytics reports + reviews_read: Access Reviews + reviews_write: Create, update and delete Reviews + users_read: Access Users + user_me_read: Access information about my user + users_manage: Manage Users + webhooks_read: View webhook subscriptions + webhooks_write: Create new webhook subscription + webhooks_delete: Delete webhook subscription + webhooks_manage: View, create and delete webhook subscriptions + oauth2_master: + type: oauth2 + flows: + clientCredentials: + tokenUrl: https://api.smartrecruiters.com/identity/oauth/token + scopes: + partner_configuration_manage: >- + Allows modification of global configuration and creation of + customer level integrations + oauth2: + type: oauth2 + flows: + clientCredentials: + tokenUrl: https://www.partner.com/identity/oauth/token + scopes: + jobs_read: Allows reading job details + candidates_read: Allows reading candidate details + assessment_result_manage: Allows managing assessment result + packages_view: Allows reading list of assessment packages + orders_manage: Allows creating orders + responses: + ServerError: + description: Unexpected error + SemanticError: + description: Request body is invalid (e.g. values breaks model definition rules) + content: + application/json: + schema: + $ref: '#/components/schemas/SemanticErrorResponse' + SubscriptionNotFound: + description: Subscription not found. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + CallbackAccepted: + description: > + Your server implementation should return this HTTP status code if the + data was received successfully. + + We expect to get the response within 5 seconds. If we don't get response + during this period, we will + + considered webhook delivary as failed. + requestBodies: + OnboardingStatus: + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardingStatus' + description: Onboarding status. + required: true + CandidatePropertyInputValue: + content: + application/json: + schema: + $ref: '#/components/schemas/CandidatePropertyInputValue' + description: Input value of the candidate property. + CandidateInput: + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateInput' + description: Candidate object that needs to be created. + required: true + Resume: + content: + multipart/form-data: + schema: + type: object + properties: + sourceTypeId: + description: Candidate Source type id + type: string + sourceSubTypeId: + description: Candidate Source subtype id + type: string + sourceId: + description: Candidate Source id + type: string + internal: + description: Mark as company employee + type: boolean + file: + description: The resume file to parse. + type: string + format: binary + CandidateStatus: + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateStatus' + description: Candidate Status to be set + BatchConsentRequest: + content: + application/json: + schema: + type: object + required: + - content + properties: + content: + type: array + minItems: 1 + maxItems: 1000 + items: + $ref: '#/components/schemas/ConsentRequest' + BatchCandidatePropertyValue: + content: + application/json: + schema: + type: array + minItems: 1 + maxItems: 100 + items: + $ref: '#/components/schemas/CandidatePropertyValue' + JSONPatch: + content: + application/json-patch+json: + schema: + $ref: '#/components/schemas/JSONPatch' + example: + - op: replace + path: /firstName + value: firstNameValue + - op: add + path: /ssoIdentifier + value: ssoIdentifierValue + description: patch request + Publication: + content: + application/json: + schema: + $ref: '#/components/schemas/Publication' + description: Publication object + JobPositionInput: + content: + application/json: + schema: + $ref: '#/components/schemas/JobPositionInput' + description: Position body object + required: true + JobAdContent: + content: + application/json: + schema: + $ref: '#/components/schemas/JobAdContent' + description: job ad + required: true + JobCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/JobWebhookPayload' + JobAdCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/JobAdWebhookPayload' + JobAdPostingsCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/JobAdPostingsWebhookPayload' + PositionCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/PositionWebhookPayload' + ApplicationCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationWebhookPayload' + ApplicationAttachmentCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationAttachmentWebhookPayload' + CandidateCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateWebhookPayload' + OfferCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/OfferWebhookPayload' + OfferApprovalCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/OfferApprovalWebhookPayload' + JobApprovalCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/JobApprovalWebhookPayload' + ReviewCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/ReviewWebhookPayload' + ScreeningQuestionsAnswersCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/ScreeningQuestionsAnswersWebhookPayload' + OnboardingProcessCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardingProcessWebhookPayload' + OnboardingHighPriorityAssignmentsCompletedCallback: + content: + application/json: + schema: + $ref: >- + #/components/schemas/OnboardingHighPriorityAssignmentsCompletedWebhookPayload + OnboardingAssignmentsCompletedCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardingAssignmentsCompletedWebhookPayload' + parameters: + candidateId: + in: path + description: candidate identifier + name: id + required: true + schema: + type: string + jobId: + in: path + description: job identifier + name: jobId + required: true + schema: + type: string + attachmentId: + in: path + description: attachment identifier + name: attachmentId + required: true + schema: + type: string + jobPropertyId: + in: path + description: job property identifier + name: id + required: true + schema: + type: string + jobPropertyValueId: + in: path + description: job property's value identifier + name: valueId + required: true + schema: + type: string + jobPropertyDependentId: + in: path + description: job property's dependent identifier + name: dependentId + required: true + schema: + type: string + jobPropertyDependentValueId: + in: path + name: dependentValueId + description: job property's dependent value identifier + required: true + schema: + type: string + candidatePropertyId: + in: path + description: candidate property identifier + name: id + required: true + schema: + type: string + candidatePropertyValueId: + in: path + description: candidate property's value identifier + name: valueId + required: true + schema: + type: string + sourceType: + in: path + description: Source type from /configuration/sources + name: sourceType + required: true + schema: + type: string + sourceValueId: + in: path + description: Source id + name: sourceValueId + required: true + schema: + type: string + sourceSubType: + in: query + description: Source SubType from /configuration/sources + name: sourceSubType + required: false + schema: + type: string + language: + in: header + description: language of returned content + name: Accept-Language + required: false + schema: + $ref: '#/components/schemas/LanguageCode' + type: string + default: en + enum: + - af + - am + - ar + - hy + - az + - eu + - bn + - bg + - ca + - zh-CN + - zh-TW + - hr + - cs + - da + - nl + - en-GB + - en + - et + - fi + - fr + - fr-CA + - gl + - ka + - de + - el + - gu + - iw + - hi + - hu + - is + - id + - ga + - it + - ja + - kn + - km + - ko + - lo + - lv + - lt + - ms + - ml + - mr + - mn + - ne + - 'no' + - fa + - fil + - pl + - pt + - pt-BR + - pt-PT + - ro + - ru + - sr + - si + - sk + - sl + - es + - es-MX + - sw + - sv + - ta + - te + - tr + - uk + - ur + - vi + - cy + - zu + description: >- + Language code, can be two-letter for the standard variant or with + additional two letters after a hyphen to identify a specific locale + + + Value "pt-PT" is deprecated and will not work, use "pt" instead. + sourceIdentifier: + in: path + description: Source identifier + name: sourceIdentifier + required: true + schema: + type: string + format: uuid + minLength: 36 + maxLength: 36 + pageId: + in: query + description: identifier of the next page of subscriptions + name: page_id + required: false + schema: + type: string + pageSize: + in: query + description: pageSize + name: pageSize + required: false + schema: + type: integer + minimum: 1 + maximum: 20000 + ApplicationId: + in: query + name: applicationId + description: ID of the application + required: true + schema: + $ref: '#/components/schemas/Uuid' + InterviewId: + in: path + name: interviewId + description: ID of the interview + required: true + schema: + $ref: '#/components/schemas/Uuid' + TimeslotId: + in: path + name: timeslotId + description: ID of the timeslot + required: true + schema: + $ref: '#/components/schemas/Uuid' + UserId: + in: path + name: userId + description: ID of the user + required: true + schema: + $ref: '#/components/schemas/UserId' + InterviewType: + in: path + name: interviewType + description: Interview type name + required: true + schema: + $ref: '#/components/schemas/InterviewType' + jobAdId: + in: path + description: job ad identifier + name: jobAdId + required: true + schema: + type: string + positionId: + in: path + description: position identifier + name: positionId + required: true + schema: + type: string + JobApplicationId: + in: path + name: jobApplicationId + description: ID of job application + required: true + schema: + $ref: '#/components/schemas/Uuid' + MessageId: + in: path + description: identifier of a message + name: id + required: true + schema: + type: string + CandidateId: + in: query + description: identifier of a candidate + name: candidateId + required: true + schema: + type: string + format: guid + JobId: + in: query + description: identifier of a job + name: jobId + required: false + schema: + type: string + format: guid + PageId: + in: query + description: identifier of next page + name: pageId + required: false + schema: + type: string + Limit: + in: query + description: limit + name: limit + required: false + schema: + type: integer + default: 10 + minimum: 1 + maximum: 100 + ReviewId: + in: path + name: reviewId + description: ID of the review + required: true + schema: + $ref: '#/components/schemas/Uuid' + ReviewerId: + in: query + name: reviewerId + description: ID of the reviewer + required: true + schema: + $ref: '#/components/schemas/UserId' + NewHireId: + in: path + name: newHireId + description: ID of the New Hire + required: true + schema: + $ref: '#/components/schemas/Uuid' + OnboardingProcessId: + in: path + name: onboardingProcessId + description: ID of the Onboarding Process + required: true + schema: + $ref: '#/components/schemas/Uuid' + WebFormAssignmentId: + in: path + name: webFormAssignmentId + description: ID of the Web Form Assignment + required: true + schema: + $ref: '#/components/schemas/Uuid' + FillablePdfFormAssignmentId: + in: path + name: fillablePdfFormAssignmentId + description: ID of the Fillable PDF Form Assignment + required: true + schema: + $ref: '#/components/schemas/Uuid' + ActivityAssignmentId: + in: path + name: activityAssignmentId + description: ID of the Activity Assignment + required: true + schema: + $ref: '#/components/schemas/Uuid' + AttachmentId: + in: path + name: attachmentId + description: ID of the Attachment + required: true + schema: + $ref: '#/components/schemas/Uuid' + userId: + in: path + description: user identifier + name: id + required: true + schema: + type: string + systemRoleId: + in: path + description: system role identifier + name: id + required: true + schema: + type: string + accessGroupId: + in: path + description: access group identifier + name: accessGroupId + required: true + schema: + type: string + eventName: + name: event-name + in: header + description: event name + schema: + $ref: '#/components/schemas/EventName' + required: true + eventVersion: + name: event-version + in: header + description: event version + schema: + type: string + required: true + eventId: + name: event-id + in: header + description: event id, remains unchanged during consecutive retried callbacks + schema: + type: string + required: true + smartrecruitersSignature: + name: smartrecruiters-signature + in: header + description: >- + callback signature see at [Create + Signature](#subscriptions/subscriptions.generateSecretKey) + schema: + type: string + required: false + smartrecruitersTimestamp: + name: smartrecruiters-timestamp + in: header + description: >- + timestamp of callback signature see at [Create + Signature](#subscriptions/subscriptions.generateSecretKey) + schema: + type: number + required: false + Link: + name: Link + in: header + description: >- + Link to entity details is provided in the Link header according to + [RFC8288](https://tools.ietf.org/html/rfc8288). The relation type is + "self". + schema: + type: string + required: true + subscriptionId: + in: path + description: subscription identifier + name: id + required: true + schema: + type: string + limit: + in: query + name: limit + description: number of elements to return + schema: + type: integer + default: 10 + minimum: 1 + maximum: 100 + callbackStatus: + in: query + name: callbackStatus + description: status of callback, whan absent all statuses will be returned + schema: + type: string + enum: + - successful + - failed + after: + in: query + name: after + description: > + Requests sent after timestamp. Min value is 30 days ago. Format ISO8601: + yyyy-MM-ddTHH:mm:ss.SSSZZ + schema: + type: string + format: date-time + before: + in: query + name: before + description: > + Requests sent before timestamp. Min value is 30 days ago. Format + ISO8601: yyyy-MM-ddTHH:mm:ss.SSSZZ + schema: + type: string + format: date-time + callbacks: + onJobCreated: + '{$request.body#/callbackUrl}': + post: + summary: Job created webhook callback + operationId: onJobCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Job updated webhook callback + description: > + Events will be triggered when any of the following job properties is + changed: + + - `title` + + - `refNumber` + + - `department` + + - `location` + + - `targetHiringDate` + + - `industry` + + - `function` + + - `typeOfEmployment` + + - `experienceLevel` + + - `eooCategory` + + - `template` + + - any of job `properties` value + operationId: onJobUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobStatusUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Job status updated webhook callback + operationId: onJobStatusUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobHiringTeamUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Job hiring-team updated webhook callback + operationId: onJobHiringTeamUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobAdCreated: + '{$request.body#/callbackUrl}': + post: + summary: Job ad created webhook callback + operationId: onJobAdCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobAdCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobAdUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Job ad updated webhook callback + operationId: onJobAdUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobAdCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobAdPostingsUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Job ad postings updated webhook callback + operationId: onJobAdPostingsUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobAdPostingsCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onPositionCreated: + '{$request.body#/callbackUrl}': + post: + summary: Position created webhook callback + operationId: onPositionCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/PositionCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onPositionUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Position updated webhook callback + operationId: onPositionUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/PositionCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onPositionDeleted: + '{$request.body#/callbackUrl}': + post: + summary: Position deleted webhook callback + operationId: onPositionDeletededCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/PositionCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onApplicationCreated: + '{$request.body#/callbackUrl}': + post: + summary: Application created webhook callback + operationId: onApplicationCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ApplicationCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onApplicationStatusUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Application status updated webhook callback + operationId: onApplicationStatusUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ApplicationCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onApplicationFieldsUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Application fields updated webhook callback + operationId: onApplicationFieldsUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ApplicationCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onApplicationOnboardingStatusUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Application onboarding status updated webhook callback + operationId: onApplicationOnboardingStatusUpdated + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ApplicationCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onApplicationAttachmentCreated: + '{$request.body#/callbackUrl}': + post: + summary: Application attachment created webhook callback + operationId: onApplicationAttachmentCreated + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ApplicationAttachmentCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onApplicationSourceUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Application source updated webhook callback + operationId: onApplicationSourceUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ApplicationCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onCandidateCreated: + '{$request.body#/callbackUrl}': + post: + summary: Candidate created webhook callback + operationId: onCandidateCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/CandidateCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onCandidateUpdated: + '{$request.body#/callbackUrl}': + post: + description: > + Events will be triggered when any of the following candidate + properties is changed: + + - `firstName` + + - `lastName` + + - `email` + + - `phoneNumber` + + - `location` + + - `web` + + - `education` + + - `experience` + + - `internal` + + - `tags` + summary: Candidate updated webhook callback + operationId: onCandidateUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/CandidateCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onCandidateDeleted: + '{$request.body#/callbackUrl}': + post: + summary: Candidate created webhook callback + operationId: onCandidateDeletedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/CandidateCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferCreated: + '{$request.body#/callbackUrl}': + post: + summary: Offer created webhook callback + operationId: onOfferCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Offer updated webhook callback + operationId: onOfferUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferApprovalCreated: + '{$request.body#/callbackUrl}': + post: + summary: Created offer approval webhook callback + operationId: onOfferApprovalCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferApprovalApproved: + '{$request.body#/callbackUrl}': + post: + summary: Approved offer approval webhook callback + operationId: onOfferApprovalApprovedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferApprovalRejected: + '{$request.body#/callbackUrl}': + post: + summary: Rejected offer approval webhook callback + operationId: onOfferApprovalRejectedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferApprovalAbandoned: + '{$request.body#/callbackUrl}': + post: + summary: Abandoned offer approval webhook callback + operationId: onOfferApprovalAbandonedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferApprovalStepApproved: + '{$request.body#/callbackUrl}': + post: + summary: Approved offer approval step webhook callback + operationId: onOfferApprovalStepApprovedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferApprovalStepRejected: + '{$request.body#/callbackUrl}': + post: + summary: Rejected offer approval step webhook callback + operationId: onOfferApprovalStepRejectedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferApproverSkipped: + '{$request.body#/callbackUrl}': + post: + summary: Skipped offer approver webhook callback + operationId: onOfferApproverSkippedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferApproverDelegated: + '{$request.body#/callbackUrl}': + post: + summary: Delegated offer approver webhook callback + operationId: onOfferApproverDelegatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferApprovalCommentCreated: + '{$request.body#/callbackUrl}': + post: + summary: Created offer approval comment webhook callback + operationId: onOfferApprovalCommentCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobApprovalCreated: + '{$request.body#/callbackUrl}': + post: + summary: Created job approval webhook callback + operationId: onJobApprovalCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobApprovalApproved: + '{$request.body#/callbackUrl}': + post: + summary: Approved job approval webhook callback + operationId: onJobApprovalApprovedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobApprovalRejected: + '{$request.body#/callbackUrl}': + post: + summary: Rejected job approval webhook callback + operationId: onJobApprovalRejectedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobApprovalAbandoned: + '{$request.body#/callbackUrl}': + post: + summary: Abandoned job approval webhook callback + operationId: onJobApprovalAbandonedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobApprovalStepApproved: + '{$request.body#/callbackUrl}': + post: + summary: Approved job approval step webhook callback + operationId: onJobApprovalStepApprovedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobApprovalStepRejected: + '{$request.body#/callbackUrl}': + post: + summary: Rejected job approval step webhook callback + operationId: onJobApprovalStepRejectedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobApproverSkipped: + '{$request.body#/callbackUrl}': + post: + summary: Skipped job approver webhook callback + operationId: onJobApproverSkippedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobApproverDelegated: + '{$request.body#/callbackUrl}': + post: + summary: Delegated job approver webhook callback + operationId: onJobApproverDelegatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobApprovalCommentCreated: + '{$request.body#/callbackUrl}': + post: + summary: Created job approval comment webhook callback + operationId: onJobApprovalCommentCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onReviewCreated: + '{$request.body#/callbackUrl}': + post: + summary: Review created webhook callback + operationId: onReviewCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ReviewCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onReviewUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Review updated webhook callback + operationId: onReviewUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ReviewCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onReviewDeleted: + '{$request.body#/callbackUrl}': + post: + summary: Review deleted webhook callback + operationId: onReviewDeletedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ReviewCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onApplicationScreeningAnswersCreated: + '{$request.body#/callbackUrl}': + post: + summary: Screening answers created + operationId: onApplicationScreeningAnswersCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ScreeningQuestionsAnswersCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onApplicationScreeningAnswersUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Screening answers updated + operationId: onApplicationScreeningAnswersUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ScreeningQuestionsAnswersCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOnboardingProcessStarted: + '{$request.body#/callbackUrl}': + post: + summary: Onboarding process started + operationId: onOnboardingProcessStartedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OnboardingProcessCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOnboardingAssignmentsHighPriorityCompleted: + '{$request.body#/callbackUrl}': + post: + summary: Onboarding high priority assignments were completed + operationId: onOnboardingAssignmentsHighPriorityCompletedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: >- + #/components/requestBodies/OnboardingHighPriorityAssignmentsCompletedCallback + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOnboardingAssignmentsCompleted: + '{$request.body#/callbackUrl}': + post: + summary: Onboarding all assignments were completed + operationId: onOnboardingAssignmentsCompletedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OnboardingAssignmentsCompletedCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + x-readme: + explorer-enabled: true + proxy-enabled: true + samples-enabled: true + _id: 63529e73531509001de49942 + tags: + - name: subscriptions + description: Manage your event subscriptions +konfigCliVersion: 1.38.34 diff --git a/sdks/db/fixed-specs/smart-recruiters-fixed-spec.yaml b/sdks/db/fixed-specs/smart-recruiters-fixed-spec.yaml new file mode 100644 index 000000000..6d57bc1b2 --- /dev/null +++ b/sdks/db/fixed-specs/smart-recruiters-fixed-spec.yaml @@ -0,0 +1,20199 @@ +openapi: 3.0.2 +info: + title: Webhooks + description: SmartOnboard Public API + version: '201910.4' + contact: + name: SmartRecruiters + url: https://developers.smartrecruiters.com + x-konfig-ignore: + object-with-no-properties: true +servers: + - url: https://api.smartrecruiters.com/webhooks-api/v201907 +tags: + - name: configuration + - name: candidates + - name: jobs + - name: users + - name: offers + - description: Manage your event subscriptions + name: subscriptions + - name: approvals + - name: assessments + - name: reports + - name: interviews + - name: reviews + - name: assignments-submissions + - name: timeslots + - name: attachments + - name: configs + - name: Application API + - name: integration + - name: feed + - name: interview types + - name: statuses + - name: messages + - name: comments + - name: results + - name: postings + - name: result + - name: packages + - name: orders + - name: files + - name: token + - name: assessment orders + - name: audit + - name: job-applications + - name: new-hires + - name: onboarding-processes + - name: assignments +paths: + /postings/{uuid}/candidates: + post: + tags: + - Application API + summary: Create a New Candidate Application + operationId: ApplicationApi_createNewCandidateApplication + security: + - key: [] + description: >- + Operation is done on behalf of a candidate – they can access and edit + the data, including attachments + parameters: + - description: Posting UUID + name: uuid + in: path + required: true + schema: + pattern: >- + [a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12} + type: string + requestBody: + description: New candidate data + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiRequest' + required: true + responses: + '200': + description: Successful request + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiResponse' + '400': + description: Invalid request + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + '401': + description: Unauthenticated + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + '429': + description: 'Too Many Requests ' + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + externalDocs: + url: https://developers.smartrecruiters.com/docs/post-an-application + /postings/{uuid}/candidates/{candidateId}/status: + get: + tags: + - Application API + summary: Get candidate status + operationId: ApplicationApi_getCandidateStatus + security: + - key: [] + parameters: + - description: Posting UUID + name: uuid + in: path + required: true + schema: + pattern: >- + [a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12} + type: string + - name: candidateId + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful request + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationStatusInfo' + '400': + description: Invalid request + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + '401': + description: Unauthenticated + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + '429': + description: 'Too Many Requests ' + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + externalDocs: + url: >- + https://developers.smartrecruiters.com/docs/get-candidate-application-status + /postings/{uuid}/configuration: + get: + tags: + - Application API + summary: Get application configuration for posting + operationId: ApplicationApi_getPostingConfiguration + security: + - key: [] + description: > + Returns application configuration for posting. + + Configuration contains screening questions, privacy policies and + settings. + + Optionally, conditional questions can be included in the response. + parameters: + - description: Language for screening questions. By default 'en'. + name: Accept-Language + in: header + schema: + type: string + - description: Posting UUID + name: uuid + in: path + required: true + schema: + pattern: >- + [a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12} + type: string + - description: > + Specifies whether conditional questions should be returned in the + response. 'false' if not specified + + - Only available for BETA customers + name: conditionalsIncluded + in: query + schema: + type: boolean + responses: + '200': + description: Successful request + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyConfiguration' + '400': + description: Invalid request + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + '401': + description: Unauthenticated + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + '429': + description: 'Too Many Requests ' + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + externalDocs: + url: >- + https://developers.smartrecruiters.com/docs/get-application-screening-questions-and-privacy-policies + /approvals/{approvalRequestId}: + get: + tags: + - approvals + summary: Get approval request by id + operationId: Approvals_getById + security: + - key: [] + - oauth: + - approvals_read + parameters: + - description: Approval request identifier + name: approvalRequestId + in: path + required: true + schema: + type: string + responses: + '200': + description: Found approval request + content: + application/json: + schema: + $ref: '#/components/schemas/ApprovalRequest' + '404': + description: | + with code + * **APPROVAL_REQUEST_NOT_FOUND** when approval request is not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /approvals/{approvalRequestId}/comments: + get: + tags: + - approvals + summary: Get comments for given approval request + operationId: Approvals_getComments + security: + - key: [] + - oauth: + - approvals_read + parameters: + - description: Approval request identifier + name: approvalRequestId + in: path + required: true + schema: + type: string + responses: + '200': + description: Found comments + content: + application/json: + schema: + $ref: '#/components/schemas/Comments' + '404': + description: | + with code + * **APPROVAL_REQUEST_NOT_FOUND** when approval request is not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + post: + tags: + - approvals + summary: Add comment to given approval request + operationId: Approvals_addCommentToRequest + security: + - key: [] + - oauth: + - approvals_read + parameters: + - description: Approval request identifier + name: approvalRequestId + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ApprovalsAddCommentToRequestRequest' + responses: + '201': + description: Created comment + content: + application/json: + schema: + $ref: '#/components/schemas/Comment' + '400': + description: > + + * **COMMENT_CONTAINS_ILLEGAL_CHARACTERS** when comment contains + illegal characters + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: | + + * **UNAUTHORIZED_ACCESS** when no permissions to add a comment + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + * **APPROVAL_REQUEST_NOT_FOUND** when approval request is not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Input validation fails + /approvals: + get: + tags: + - approvals + summary: Get pending approvals requests where you are an approver. + operationId: Approvals_getPendingRequests + security: + - key: [] + - oauth: + - approvals_read + description: The max number of returned approval requests is 100. + parameters: + - description: > + Identifier for the paged list of approval requests. To get the first + page of approval request, leave it blank. + name: pageId + in: query + required: false + schema: + type: string + responses: + '200': + description: Approval requests + content: + application/json: + schema: + $ref: '#/components/schemas/ApprovalRequests' + headers: + Link: + description: | + Links to related resources, in the format defined by + [RFC 8288](https://tools.ietf.org/html/rfc8288). + This will include a link with relation type `next` to the + next page, if there is a next page. + schema: + type: string + '400': + description: | + Unable to retrieve approval requests with codes + * **INVALID_PAGE_ID** when pageId is incorrect + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + post: + tags: + - approvals + summary: Create approval request + operationId: Approvals_createApprovalRequest + security: + - key: [] + - oauth: + - approvals_create + description: > + The new approval request will be created based on approval request with + provided baseId. If base approval request is pending, it will be + abandoned. The newly created request will contain new id, type, decision + mode and steps, as well as PENDING statuses and decisions. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ApprovalsCreateApprovalRequestRequest' + responses: + '201': + description: Approval request created + content: + application/json: + schema: + $ref: '#/components/schemas/ApprovalRequest' + '400': + description: > + Unable to create approval request with codes + + * **BASE_ID_NOT_FOUND** when base approval request id doesn't exist + + * **APPROVER_ID_NOT_FOUND** when at least one of approver ids + doesn't exist + + * **INVALID_DECISION_MODE** when decisionMode is `all` and type is + `sequential`. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: > + Unable to create approval request with codes + + * **UNAUTHORIZED_ACCESS** when no permissions to create approval + request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /approvals/{approvalRequestId}/approve-decisions: + post: + tags: + - approvals + summary: Approve the approval request by id + operationId: Approvals_approveDecisions + security: + - key: [] + - oauth: + - approvals_read + - approvals_decide + parameters: + - description: Approval request identifier + name: approvalRequestId + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ApprovalsApproveDecisionsRequest' + responses: + '204': + description: Approval request approved + '400': + description: > + with code + + * **APPROVAL_REQUEST_NOT_FOUND** + + * **APPROVAL_COMPLETED** when approval request is already approved, + rejected or abandoned + + * **DECISION_NOT_YET_ALLOWED** when trying to take decision before + previous step completion + + * **APPROVER_NOT_ALLOWED** when user is not an approver in given + approval request + + * **DECISION_ALREADY_TAKEN** when approver is trying to modify + already taken decision + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + * **APPROVAL_REQUEST_NOT_FOUND** when approval request is not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /approvals/{approvalRequestId}/reject-decisions: + post: + tags: + - approvals + summary: Reject the approval request by id + operationId: Approvals_rejectRequestById + security: + - key: [] + - oauth: + - approvals_read + - approvals_decide + parameters: + - description: Approval request identifier + name: approvalRequestId + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ApprovalsRejectRequestByIdRequest' + responses: + '204': + description: Approval request rejected + '400': + description: > + with code + + * **APPROVAL_REQUEST_NOT_FOUND** + + * **APPROVAL_COMPLETED** when approval request is already approved, + rejected or abandoned + + * **DECISION_NOT_YET_ALLOWED** when trying to take decision before + previous step completion + + * **APPROVER_NOT_ALLOWED** when user is not an approver in given + approval request + + * **DECISION_ALREADY_TAKEN** when approver is trying to modify + already taken decision + + * **COMMENT_IS_REQUIRED** when approver is trying reject without the + comment + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + * **APPROVAL_REQUEST_NOT_FOUND** when approval request is not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /partner/configuration: + get: + tags: + - configuration + summary: get partner configuration + operationId: Configuration_getDetails + security: + - oauth2_master: + - partner_configuration_manage + responses: + '200': + description: Partner configuration + content: + application/json: + schema: + $ref: '#/components/schemas/PartnerConfiguration' + '401': + description: Unauthorized request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Request missed required scopes + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Configuration does not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + put: + tags: + - configuration + summary: saves configuration for partner + operationId: Configuration_savePartnerConfig + security: + - oauth2_master: + - partner_configuration_manage + description: Endpoint for saving partner's configuration. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PartnerConfigurationRequest' + responses: + '200': + description: Configuration created + content: + application/json: + schema: + $ref: '#/components/schemas/PartnerConfiguration' + '400': + description: Invalid configuration provided + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Request missed required scopes + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /integration/company/{companyId}: + post: + tags: + - integration + summary: enable the company integration + operationId: Integration_integrationSetup + security: + - oauth2_master: + - partner_configuration_manage + description: |2- + + Set up integration. + 1. Validates if token has client_credentials_write scope (created using master credentials) + 2. Validates if company gave consent for integration with partner + 3. Saves credentials send by the partner + 4. Created credentials for current company + 5. Sends created credentials back to partner + parameters: + - name: companyId + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ClientCredentials' + responses: + '200': + description: Customer-level integration credentials + content: + application/json: + schema: + $ref: '#/components/schemas/ClientCredentials' + '400': + description: Invalid request body + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + Request missed required scopes or company did not give consent for + integration + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Partner configuration does not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Partner already integrated for company + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /orders/{orderId}/results: + patch: + tags: + - result + summary: updates package result + operationId: Result_updatePackageResult + security: + - oauth2: + - assessment_result_manage + description: >- + Updates results for package ordered. Follows RFC 7396 rules to describe + set of modifications. + parameters: + - description: Order ID + name: orderId + in: path + required: true + schema: + type: string + format: uuid + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PackageResult' + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PackageResult' + '400': + description: Invalid result partial update provided + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Request missed required scopes + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Order with given id does not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '415': + description: Unsupported payload format + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /orders/{orderId}/results/attachment: + post: + tags: + - result + summary: add attachment to order + operationId: Result_addAttachmentToOrder + description: >- + Add attachment to order. Adding attachment to inline assessment orders + is not supported. + parameters: + - description: Order ID + name: orderId + in: path + required: true + schema: + type: string + format: uuid + requestBody: + content: + multipart/form-data: + schema: + $ref: '#/components/schemas/ResultAddAttachmentToOrderRequest' + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: '#/components/schemas/AttachmentResult' + '401': + description: Unauthorized request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Request missed required scopes + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Order with given id does not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /integration: + get: + tags: + - integration + summary: Shows consent form on partner side + operationId: Integration_showConsentFormOnPartnerSide + description: >- + Endpoint to which SmartRecruiters will send request for consent. + + After that Partner will: + + 1. Create client credentials which may be used on SmartRecruiters side + + 2. Retrieve access_token using master client credentials + + 3. Send generated credentials using oauth token obtained + + In return SmartRecruiters would send client credentials for company + setting up the integration. + parameters: + - description: id of company setting up the integration + name: companyId + in: query + schema: + type: string + responses: + '200': + description: Page with consent for customer admin + content: + text/html: + schema: + $ref: >- + #/components/schemas/IntegrationShowConsentFormOnPartnerSideResponse + /integrations/companies/{companyId}: + delete: + tags: + - integration + summary: Removes integration on partner side + operationId: Integration_removeIntegrationOnPartnerSide + parameters: + - description: id of company with integration + name: companyId + in: path + required: true + schema: + type: string + responses: + '204': + description: No Content + content: + application/json: + schema: + $ref: >- + #/components/schemas/IntegrationRemoveIntegrationOnPartnerSideResponse + /packages: + get: + tags: + - packages + summary: Retrieves a list of packages + operationId: Packages_getList + security: + - oauth2: + - packages_view + parameters: + - description: Information about recruiter requesting list of packages + name: requester + in: header + required: false + schema: + $ref: '#/components/schemas/Requester' + - description: country code + name: country-code + in: query + required: false + schema: + type: string + - description: region abbreviation + name: region-abbr + in: query + required: false + schema: + type: string + - description: city + name: city + in: query + required: false + schema: + type: string + - description: address + name: address + in: query + required: false + schema: + type: string + - description: postal code + name: postal-code + in: query + required: false + schema: + type: string + - description: describe whether job is remote or not + name: remote + in: query + required: false + schema: + type: boolean + - description: >- + Example partner field. Partner defines list of allowed fields in + configuration. Client binds job fields in his configuration. All + fields with non-empty values will be included in this call. + name: partner-field-id + in: query + required: false + schema: + type: string + responses: + '200': + description: List of assessment packages + content: + application/json: + schema: + $ref: '#/components/schemas/PackagesGetListResponse' + '204': + description: Returned when there are not packages to present + '400': + description: Invalid requester data in header + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Request missed required scopes + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /packages/{assessmentPackageId}: + get: + tags: + - packages + summary: Retrieves a package by id + operationId: Packages_getById + security: + - oauth2: + - packages_view + parameters: + - name: assessmentPackageId + in: path + required: true + schema: + type: string + responses: + '200': + description: Assessment package + content: + application/json: + schema: + $ref: '#/components/schemas/AssessmentPackage' + '401': + description: Unauthorized request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Request missed required scopes + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: No assessment package with given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /packages/orders: + post: + tags: + - orders + summary: Orders assessment package for candidate + operationId: Orders_assessPackageForCandidate + security: + - oauth2: + - orders_modify + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AssessmentPackageOrderRequest' + responses: + '202': + description: Order acceptance + content: + application/json: + schema: + $ref: '#/components/schemas/OrdersAssessPackageForCandidateResponse' + '401': + description: Unauthorized request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Request missed required scopes + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: There is no package which was ordered + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /packages/inline/orders: + post: + tags: + - orders + summary: Orders inline assessment package for candidate + operationId: Orders_assessPackageForCandidate + security: + - oauth2: + - orders_modify + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/InlineAssessmentPackageOrderRequest' + responses: + '200': + description: Response containing url to inline assessment + content: + application/json: + schema: + $ref: '#/components/schemas/InlineAssessmentPackageResponse' + '401': + description: Unauthorized request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Request missed required scopes + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: There is no package which was ordered + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /oauth/token: + post: + tags: + - token + summary: Exchange credentials for an access token + operationId: Token_exchangeCredentialsForAccessToken + description: >- + SmartRecruiters will call this endpoint to exchange the credentials + received from Partner for an access token. + requestBody: + content: + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TokenInput' + responses: + '200': + description: Access token + content: + application/json: + schema: + $ref: '#/components/schemas/AccessToken' + '400': + description: Error Response https://tools.ietf.org/html/rfc6749#section-5.2 + content: + application/json: + schema: + $ref: '#/components/schemas/TokenErrorResponse' + /assessment-orders: + get: + tags: + - assessment orders + summary: Retrieves all assessment orders for specified application + operationId: AssessmentOrders_getAllForApplication + security: + - key: [] + - oauth: + - assessment_orders_read + parameters: + - description: ID of the application + in: query + name: applicationId + required: true + schema: + $ref: '#/components/schemas/Uuid' + responses: + '200': + description: Assessment orders were retrieved + content: + application/json: + schema: + $ref: '#/components/schemas/AssessmentOrders' + '401': + description: > + with codes: + + * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is not + authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **APPLICATION_NOT_FOUND** when there is no application with given + id + + * **MISSING_COMPANY_INTEGRATION** when no integration with + assessment partner was found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + /audit-events: + get: + tags: + - audit + summary: List audit events + operationId: Audit_listEvents + security: + - key: [] + - oauth: + - audit_events_read + description: > + Data collected via the Audit API will be retained at least 26 months. + When `eventDateAfter` and `eventDateBefore` are not set, by default, the + time range is set to the last 7 days. Below is the list of the events + that are currently exposed in the API: + + * **USER_ACCOUNT_ACTIVATED** - user account has been activated, user can + now login to the system + + * **USER_ACCOUNT_CREATED** - user account has been created, in order to + log in to the system account has to be activated first + + * **USER_ACCOUNT_DEACTIVATED** - user account has been deactivated, + logging possibility disabled for the user + + * **USER_ACCOUNT_UPDATED** - user account has been modified + + * **USER_AUTHENTICATION_INVALID_CREDENTIALS** - user authentication + failed due to invalid credentials. + + Additional context represents the type of the authentication method: + + ```json + + context: { + authenticationType: "PASSWORD" + } + + ``` + + * **USER_AUTHENTICATION_SUCCESS** - user authentication succeeded + + Additional context represents the type of the authentication method: + + ```json + + context: { + authenticationType: "PASSWORD", + officeName: "string" //Optional + } + + ``` + + * **USER_PASSWORD_CHANGED** - user password has been changed + + * **USER_PASSWORD_RESET** - user password has been reset + + * **USER_ROLE_CHANGED** - user role has been changed, + + Additional context represents previous and current role of the user: + + ```json + + context: { + currentRole: "RESTRICTED", + previousRole: "STANDARD" + } + + ``` + + * **USER_API_KEY_RENEWED** - user api-key has been renewed + + * **CREDENTIALS_CREATED** - api-key or OAuth credentials has been + renewed + + * **CREDENTIALS_CHANGED** - api-key or OAuth credentials has been + modified + + * **CREDENTIALS_REVOKED** - api-key or OAuth credentials has been + modified + + Additional context represents credential type: + + ```json + + context: { + credentialType: "string" + } + + ``` + + * **SEARCH** - user performed search + + For entityType CANDIDATE additional context represents candidate search + event: + + ```json + + context: { + keyword: [ + "test" + ], + jobTitles: [ + "Freelancer", + "Software Engineer" + ], + jobNames: [ + "Java Developer, San Francisco" + ], + companies: [ + "SmartRecruiters" + ], + schools: [ + "University of Science and Technology" + ] + ``` + + * **JOB_DELETED** - job was deleted + + Additional context represents the deleted job: + + ```json + + context: { + jobName: "string", + jobRefNumber: "string" + } + + ``` + + * **HIRING_TEAM_MEMBER_ADDED** - a new member was added to the hiring + team of the job + + Additional context represents the new member: + + ```json + + context: { + userId: "string", + roleId: "string", + roleName: "string" + } + + ``` + + * **HIRING_TEAM_MEMBER_REMOVED** - a member was removed from the hiring + team of the job + + Additional context represents the removed member: + + ```json + + context: { + userId: "string" + } + + ``` + + * **HIRING_TEAM_ROLE_UPDATED** - role of one of the hiring team members + was updated + + Additional context represents previous and current role of the updated + member: + + ```json + + context: { + userId: "string", + previousRoleId: "string", + previousRoleName: "string", + currentRoleId: "string", + currentRoleName: "string" + } + + ``` + + * **APPROVAL_DELEGATION_FROM_USER_CREATED** - a user created an approval + delegation + + * **APPROVAL_DELEGATION_FROM_USER_CANCELLED** - a user cancelled an + approval delegation + + * **APPROVAL_DELEGATION_TO_USER_CREATED** - an approval delegation to a + user (a delegate) has been created + + * **APPROVAL_DELEGATION_TO_USER_CANCELLED** - an approval delegation to + a user (a delegate) has been created + + Additional context represents approval delegation event's details: + + ```json + + context: { + originalApproverId: "string", + delegateApproverId: "string", + startDate: date, + endDate: date + } + + ``` + + * **JOB_APPROVAL_REQUESTED** - a job approval was requested + + Additional context represents approval modified event's details: + + ```json + + comment: { + text: 'string', + authorId: 'string', + date: 'string', + + } + + context: { + comments: [comment] + } + + ``` + + * **JOB_APPROVAL_APPROVED** - a job approval was approved + + Additional context represents approval modified event's details: + + ```json + + comment: { + text: 'string', + authorId: 'string', + date: 'string', + + } + + context: { + comments: [comment] + } + + ``` + + * **JOB_APPROVAL_REJECTED** - a job approval was rejected + + Additional context represents approval modified event's details: + + ```json + + comment: { + text: 'string', + authorId: 'string', + date: 'string', + + } + + context: { + comments: [comment] + } + + ``` + + * **JOB_APPROVAL_ABANDONED** - a job approval was abandoned + + Additional context represents approval modified event's details: + + ```json + + comment: { + text: 'string', + authorId: 'string', + date: 'string', + + } + + context: { + comments: [comment] + } + + ``` + + * **OFFER_APPROVAL_APPROVED** - an offer approval was approved + + * **OFFER_APPROVAL_REJECTED** - an offer approval was rejected + + * **OFFER_APPROVAL_ABANDONED** - an offer approval was abandoned + + Additional context represents approval event's details. + `type` is one of the values: + * sequential - consent of every approver is required, approval requests are sent one by one in a defined order. + * parallel - all approvers can approve at the same time. + + `decisionMode` is one of the values: + * all - consent of every approver is required + * any - consent of a single approver is enough + + ```json + + decision: { + decidedOn: integer, + decision: 'string', + decidedBy: 'string', + userId: 'string' + } + + context: { + approvalRequestId: 'string' + approvers: [decision] + type: 'string', + decisionMode: 'string' + } + + ``` + + * **JOB_APPROVAL_STEP_APPROVED** - a job approval step was approved by + author + + * **JOB_APPROVAL_STEP_REJECTED** - a job approval step was rejected by + author + + Additional context represents approval step modified event's details: + + ```json + + context: { + approver: 'string' + comment: 'string' + } + + ``` + + * **JOB_APPROVAL_STEP_SKIPPED** - an author skipped approver for a job + approval step + + * **OFFER_APPROVAL_STEP_APPROVED** - an offer approval step was approved + by author + + * **OFFER_APPROVAL_STEP_REJECTED** - an offer approval step was rejected + by author + + * **OFFER_APPROVAL_STEP_SKIPPED** - an author skipped approver for an + offer approval step + + Additional context represents approval step modified event's details: + + ```json + + context: { + approvalRequestId: "string" + approver: "string", + reasonId: "string", + comment: "string" + } + + ``` + + * **JOB_APPROVAL_STEP_DELEGATED** - job approval step was delegated to + new approver + + * **OFFER_APPROVAL_STEP_DELEGATED** - job approval step was delegated to + new approver + + Additional context represents approval step delegated event's details: + + ```json + + context: { + approvalRequestId: "string" + originalApproverId: "string", + delegateApproverId: "string" + } + + ``` + + * **OFFER_ACCEPTED** - offer was accepted. Returns viaIntegration which + is set to true if offer was accepted via third party integration like + Docusign + + ```json + + context: { + viaIntegration: "boolean" + } + + ``` + + * **OFFER_DECLINED** - offer was declined. Returns viaIntegration which + is set to true if offer was accepted via third party integration like + Docusign + + ```json + + context: { + viaIntegration: "boolean" + } + + ``` + + * **CANDIDATE_PERSONAL_DATA_MODIFIED** - Candidate personal data were + modified. Only Web Application actions are audited. Event doesn't cover + Customer API. Personal data covers: + * First Name + * Last Name + * E-mail + * Phone + * Location + * Phone Number + * Social Links (Skype Id, Indeed Id, Twitter account, LinkedIn profile, Facebook profile, Websites) + * **CANDIDATE_PROFILE_MODIFIED** - Candidate profile data were modified. + Only Web Application actions are audited. Event doesn't cover Customer + API and Mobile application. + + * **CANDIDATE_DELETED** - Candidate was deleted. The authorType property + can be used to distinguish deletion nature. Following values are + possible: + * USER - candidate was deleted by user + * SYSTEM - candidate was deleted by compliance mechanism (due to retention period end or lack of consent) + * CANDIDATE - candidate deleted oneself + + * **CANDIDATE_PROFILE_OPENED** - Candidate profile was opened by user. + Only Web Application actions are audited. Event doesn't cover Customer + API and Mobile application. + + * **CANDIDATE_EEO_FILLED** - Missing Candidate EEO informations were + filled by user. + + * **CANDIDATE_PROFILE_UPDATED_DUE_TO_MERGE** - candidate profile updated + due to merge. + + Additional context with id of duplicated candidate profile: + + ```json + + context: { + mergedProfileId: "string" + } + + ``` + + * **CANDIDATE_DELETED_DUE_TO_MERGE** - candidate profile deleted due to + merge. + + Additional context with id of master candidate profile: + + ```json + + context: { + masterProfileId: "string" + } + + ``` + + * **CANDIDATE_TAGS_MODIFIED** - candidate tags have been modified. It + means that tags have been added, replaced or deleted from the profile. + + The additional context contains the `tags` that are assigned to the candidate after the successful operation. + + ```json + + context: { + tags: "string" + } + + ``` + + * **APPLICATION_PROPERTIES_UPDATED** - application properties updated. + + Additional context with id of updated properties: + + ```json + + context: { + updatedPropertiesIds: "string", + updatedPropertiesKeys: "string" + } + + ``` + + * **APPLICATION_SOURCE_MODIFIED** - community or job application source + has been changed. + + The additional context contains the old and new source identifier after the successful operation. + + ```json + + context: { + previousSource: "string", + nextSource: "string" + } + + ``` + + * **ONBOARDING_STATUS_UPDATED** - onboarding status updated. + + Additional context with ids of values: + + ```json + + context: { + fromValueId: "string", + toValueId: "string" + } + + ``` + + * **JOB_APPLICATION_CREATED** - job application created. Currently, we + are auditing only actions undertaken by an employee. + + Additional context with ids of values: + + ```json + + context: { + currentStatus: "string" + } + + ``` + + * **JOB_APPLICATION_STATE_MODIFIED** - job application state modified. + Currently, we are auditing only actions undertaken by an employee or + system user. + + Additional context with ids of values: + + ```json + + context: { + currentStatus: "string", + currentStep: "string", //optional, might not be returned if lack of configured step + previousStatus: "string", + previousStep: "string" //optional, might not be returned if lack of configured step + } + + ``` + + * **LRSC_CONSENT_GIVEN** - Consent for data exchange within LinkedIn + Recruiter System Connect integration was given. + + * **OAUTH_APPLICATION_ACCESS_GRANTED** - Access to OAuth application was + granted to given user. + + Additional context represents grant's details: + + ```json + + context: { + applicationId: "string", + applicationName: "string", + startDate: "date-time", + endDate: "date-time" + } + + ``` + + JOB_PROPERTY_* events audit changes from both Web Application on Job + Field Settings page and Configuration API unless otherwise indicated. + + * **JOB_PROPERTY_CREATED** - a job property was created. + + * **JOB_PROPERTY_ACTIVATED** - a job property was activated. + + * **JOB_PROPERTY_DEACTIVATED** - a job property was deactivated. + + * **JOB_PROPERTY_UPDATED** - a job property was updated. + + Additional context represents current and previous job property: + + ```json + + property: { + id: "string", + label: "string", + category: "string", + active: boolean, + visible: boolean, + required: boolean + } + + context: { + currentProperty: property, + previousProperty: property + } + + ``` + + * **JOB_PROPERTY_UPDATED_VALUES** - values in job property were updated. + Only actions from UI are audited within this event. + + Additional context represents updated current and previous values: + + ```json + + value: { + id: "string", + label: "string", + archived: boolean + } + + context: { + currentValues: [value], + previousValues: [value] + } + + ``` + + * **JOB_PROPERTY_UPDATED_VALUE** - a job property value was updated + (changed label, (un)archived). Only actions from Configuration API are + audited. These actions from UI are audited within + JOB_PROPERTY_UPDATED_VALUES event. + + Additional context represents updated current and previous value: + + ```json + + context: { + currentValue: value, + previousValue: value + } + + ``` + + * **JOB_PROPERTY_ADDED_VALUE** - a value was added to a job property. + Only actions from Configuration API are audited. These actions from UI + are audited within JOB_PROPERTY_UPDATED_VALUES event. + + Additional context represents added value: + + ```json + context: { + value: [value] + } + ``` + + * **JOB_PROPERTY_ARCHIVED_VALUE** - a job property value was archived. + Only actions from Configuration API are audited. These actions from UI + are audited within JOB_PROPERTY_UPDATED_VALUES event. + + Additional context represents archived value id: + + ```json + + context: { + valueId: "string" + } + + ``` + + * **JOB_PROPERTY_DEPENDENT_PROPERTIES_UPDATED** - job property + dependents were updated. + + Additional context represents updated dependent properties: + + ```json + + context: { + currentDependents: ["string"], + previousDependents: ["string"] + } + + ``` + + * **JOB_PROPERTY_DEPENDENT_VALUES_UPDATED** - job property dependent + values were updated. + + Additional context represents added or updated dependent values: + + ```json + + dependentValue: { + "parent": { + "id": "string", + "label": "string" + }, + "values": [value], + "valuesIds": ["string"] + } + + + context: { + dependentId: "string", + currentDependentValues: [dependentValue], + previousDependentValues: [dependentValue] + } + + ``` + + * **JOB_PROPERTIES_CHANGED** - job details has changed (job fields + edited on job) + + ```json + + fieldValue: { + "fieldId": "string", + "value": "string" + } + + context: { + "previousProperties": [fieldValue], + "currentProperties": [fieldValue] + } + + ``` + + * **POSITION_UPDATED** - when position is updated + + * **POSITION_DELETED** - when position is deleted + + * **POSITION_CREATED** - when position is created + + * **POSITION_ASSIGNED** - when position is assigned + + * **CANCEL_NOT_FILLED_POSITION** - when not filled position is cancelled + + ```json + + position: { + id: 'string', + positionId: 'string', + status: 'string', + openDate: 'date', + targetStartDate: 'date', + type: 'string' + } + + context: { + previous: position, + current: position + } + + ``` + + * **JOB_AD_CREATED** - when job ad is created + + ```json + + location: { + country: 'string' + countryCode: 'string' + regionCode: 'string' + region: 'string' + city: 'string' + address: 'string' + postalCode: 'string' + longitude: 'string' + latitude: 'string' + manual: boolean + } + + jobAd: { + id: 'string', + title: 'string', + visibility: 'string', + creatorId: 'string', + modifierId: 'string', + createDate: 'string', + location: location, + sections: 'string', + languageId: 'string', + applyUrl: 'string' + } + + context: { + jobAd: jobAd + } + + ``` + + * **JOB_AD_UPDATED** - when job ad is updated + + ```json + + context: { + previous: jobAd, + current: jobAd + } + + ``` + + * **JOB_AD_DELETED** - when job ad is deleted + + ```json + + context: { + jobAdId: 'string', + employeeId: 'string' + } + + ``` + + * **ONBOARDING_PROCESS_DELETED** - when an Onboarding Process is deleted + from SmartOnboard + + ```json + + context: { + deletionReason: 'string' + } + + ``` + + * **CUSTOMER_REPORT_DOWNLOADED** - when a report is downloaded + Additional context with ids of values: + + ```json + + context: { + reportFileId: 'string', + reportId: 'string' + } ``` + parameters: + - description: >- + ISO8601-formatted time boundaries for the event time, Format: + yyyy-MM-ddTHH:mm:ss.SSSZZ (example: 2023-01-21T12:50:02.594Z) + in: query + name: eventDateAfter + schema: + type: string + format: date-time + - description: >- + ISO8601-formatted time boundaries for the event time, Format: + yyyy-MM-ddTHH:mm:ss.SSSZZ (example: 2023-01-21T12:50:02.594Z) + in: query + name: eventDateBefore + schema: + type: string + format: date-time + - description: Name of the event + in: query + name: eventName + explode: true + schema: + type: array + items: + type: string + enum: + - USER_ACCOUNT_ACTIVATED + - USER_ACCOUNT_CREATED + - USER_ACCOUNT_DEACTIVATED + - USER_ACCOUNT_UPDATED + - USER_AUTHENTICATION_INVALID_CREDENTIALS + - USER_AUTHENTICATION_SUCCESS + - USER_PASSWORD_CHANGED + - USER_PASSWORD_RESET + - USER_ROLE_CHANGED + - USER_API_KEY_RENEWED + - CREDENTIALS_CREATED + - CREDENTIALS_CHANGED + - CREDENTIALS_REVOKED + - SEARCH + - CANDIDATE_PERSONAL_DATA_MODIFIED + - CANDIDATE_PROFILE_MODIFIED + - CANDIDATE_DELETED + - CANDIDATE_PROFILE_OPENED + - CANDIDATE_PROFILE_UPDATED_DUE_TO_MERGE + - CANDIDATE_DELETED_DUE_TO_MERGE + - CANDIDATE_TAGS_MODIFIED + - APPLICATION_PROPERTIES_UPDATED + - APPLICATION_SOURCE_MODIFIED + - ONBOARDING_STATUS_UPDATED + - JOB_APPLICATION_CREATED + - JOB_APPLICATION_STATE_MODIFIED + - JOB_DELETED + - HIRING_TEAM_MEMBER_ADDED + - HIRING_TEAM_MEMBER_REMOVED + - HIRING_TEAM_ROLE_UPDATED + - APPROVAL_DELEGATION_FROM_USER_CREATED + - APPROVAL_DELEGATION_FROM_USER_CANCELLED + - APPROVAL_DELEGATION_TO_USER_CREATED + - APPROVAL_DELEGATION_TO_USER_CANCELLED + - JOB_APPROVAL_REQUESTED + - JOB_APPROVAL_APPROVED + - JOB_APPROVAL_REJECTED + - JOB_APPROVAL_ABANDONED + - JOB_APPROVAL_STEP_APPROVED + - JOB_APPROVAL_STEP_REJECTED + - JOB_APPROVAL_STEP_SKIPPED + - JOB_APPROVAL_STEP_DELEGATED + - OFFER_APPROVAL_APPROVED + - OFFER_APPROVAL_REJECTED + - OFFER_APPROVAL_ABANDONED + - OFFER_APPROVAL_STEP_APPROVED + - OFFER_APPROVAL_STEP_REJECTED + - OFFER_APPROVAL_STEP_SKIPPED + - OFFER_APPROVAL_STEP_DELEGATED + - OFFER_ACCEPTED + - OFFER_DECLINED + - CANDIDATE_EEO_FILLED + - LRSC_CONSENT_GIVEN + - OAUTH_APPLICATION_ACCESS_GRANTED + - JOB_PROPERTY_CREATED + - JOB_PROPERTY_UPDATED + - JOB_PROPERTY_ACTIVATED + - JOB_PROPERTY_DEACTIVATED + - JOB_PROPERTY_UPDATED_VALUES + - JOB_PROPERTY_UPDATED_VALUE + - JOB_PROPERTY_ADDED_VALUE + - JOB_PROPERTY_ARCHIVED_VALUE + - JOB_PROPERTY_DEPENDENT_PROPERTIES_UPDATED + - JOB_PROPERTY_DEPENDENT_VALUES_UPDATED + - JOB_PROPERTIES_CHANGED + - POSITION_UPDATED + - POSITION_DELETED + - POSITION_CREATED + - POSITION_ASSIGNED + - CANCEL_NOT_FILLED_POSITION + - JOB_AD_CREATED + - JOB_AD_UPDATED + - JOB_AD_DELETED + - ONBOARDING_PROCESS_DELETED + - CUSTOMER_REPORT_DOWNLOADED + default: + - USER_ACCOUNT_ACTIVATED + - USER_ACCOUNT_CREATED + - USER_ACCOUNT_DEACTIVATED + - USER_ACCOUNT_UPDATED + - USER_AUTHENTICATION_INVALID_CREDENTIALS + - USER_AUTHENTICATION_SUCCESS + - USER_PASSWORD_CHANGED + - USER_PASSWORD_RESET + - USER_ROLE_CHANGED + - USER_API_KEY_RENEWED + - CREDENTIALS_CREATED + - CREDENTIALS_CHANGED + - CREDENTIALS_REVOKED + - SEARCH + - JOB_DELETED + - HIRING_TEAM_MEMBER_ADDED + - HIRING_TEAM_MEMBER_REMOVED + - HIRING_TEAM_ROLE_UPDATED + - APPROVAL_DELEGATION_FROM_USER_CREATED + - APPROVAL_DELEGATION_FROM_USER_CANCELLED + - APPROVAL_DELEGATION_TO_USER_CREATED + - APPROVAL_DELEGATION_TO_USER_CANCELLED + - JOB_APPROVAL_REQUESTED + - JOB_APPROVAL_APPROVED + - JOB_APPROVAL_REJECTED + - JOB_APPROVAL_ABANDONED + - JOB_APPROVAL_STEP_APPROVED + - JOB_APPROVAL_STEP_REJECTED + - JOB_APPROVAL_STEP_SKIPPED + - JOB_APPROVAL_STEP_DELEGATED + - OFFER_APPROVAL_APPROVED + - OFFER_APPROVAL_REJECTED + - OFFER_APPROVAL_ABANDONED + - OFFER_APPROVAL_STEP_APPROVED + - OFFER_APPROVAL_STEP_REJECTED + - OFFER_APPROVAL_STEP_SKIPPED + - OFFER_APPROVAL_STEP_DELEGATED + - OFFER_ACCEPTED + - OFFER_DECLINED + - CANDIDATE_PERSONAL_DATA_MODIFIED + - CANDIDATE_PROFILE_MODIFIED + - CANDIDATE_DELETED + - CANDIDATE_PROFILE_OPENED + - CANDIDATE_EEO_FILLED + - CANDIDATE_PROFILE_UPDATED_DUE_TO_MERGE + - CANDIDATE_DELETED_DUE_TO_MERGE + - CANDIDATE_TAGS_MODIFIED + - APPLICATION_PROPERTIES_UPDATED + - APPLICATION_SOURCE_MODIFIED + - ONBOARDING_STATUS_UPDATED + - JOB_APPLICATION_CREATED + - JOB_APPLICATION_STATE_MODIFIED + - LRSC_CONSENT_GIVEN + - OAUTH_APPLICATION_ACCESS_GRANTED + - JOB_PROPERTY_CREATED + - JOB_PROPERTY_UPDATED + - JOB_PROPERTY_ACTIVATED + - JOB_PROPERTY_DEACTIVATED + - JOB_PROPERTY_UPDATED_VALUES + - JOB_PROPERTY_UPDATED_VALUE + - JOB_PROPERTY_ADDED_VALUE + - JOB_PROPERTY_ARCHIVED_VALUE + - JOB_PROPERTY_DEPENDENT_PROPERTIES_UPDATED + - JOB_PROPERTY_DEPENDENT_VALUES_UPDATED + - JOB_PROPERTIES_CHANGED + - POSITION_UPDATED + - POSITION_DELETED + - POSITION_CREATED + - POSITION_ASSIGNED + - CANCEL_NOT_FILLED_POSITION + - JOB_AD_CREATED + - JOB_AD_UPDATED + - JOB_AD_DELETED + - ONBOARDING_PROCESS_DELETED + - CUSTOMER_REPORT_DOWNLOADED + - description: Type of the author who generated the event + in: query + name: authorType + explode: true + schema: + type: array + items: + type: string + enum: + - USER + - SUPPORT_USER + - SYSTEM + - CANDIDATE + default: + - USER + - SUPPORT_USER + - SYSTEM + - CANDIDATE + - description: Unique identifier of the author + in: query + name: authorId + schema: + type: string + - description: Type of the entity that the event is related to + in: query + name: entityType + explode: true + schema: + type: array + items: + type: string + enum: + - USER + - CANDIDATE + - APPLICATION + - OFFER + - JOB + - COMPANY + - JOB_PROPERTY + - JOB_AD + - CREDENTIAL + - REPORT_FILE + - ONBOARDING_PROCESS + default: + - USER + - CANDIDATE + - APPLICATION + - OFFER + - JOB + - COMPANY + - JOB_PROPERTY + - JOB_AD + - CREDENTIAL + - REPORT_FILE + - ONBOARDING_PROCESS + - description: Unique identifier of the entity that the event is related to + in: query + name: entityId + schema: + type: string + - description: Unique identifier for the next page of events + in: query + name: nextPageId + schema: + type: string + - description: Number of audit events to return. Maximum value is 100. + in: query + name: limit + schema: + type: integer + minimum: 1 + maximum: 100 + default: 10 + responses: + '200': + description: A single page of audit events + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/Events' + '403': + description: Audit events access forbidden. ADMINISTRATOR role is required. + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ErrorResponse' + /candidates/{id}/tags: + parameters: + - $ref: '#/components/parameters/candidateId' + post: + tags: + - candidates + summary: Add tags to a candidate + operationId: Candidates_addTagsToCandidate + security: + - key: [] + - oauth: + - candidates_manage + description: Add new tags to a given candidate. It doesn't replace existing tags. + requestBody: + description: Tags to be added. + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateTags' + required: true + responses: + '201': + description: Added tags + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateTags' + '400': + description: Adding too many tags + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: No permission to access this candidate + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + get: + tags: + - candidates + summary: Get tags for a candidate + operationId: Candidates_getTags + security: + - key: [] + - oauth: + - candidates_read + responses: + '200': + description: Candidate's tags + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateTags' + '403': + description: No permission to access this candidate + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + put: + tags: + - candidates + summary: Update tags for a candidate + operationId: Candidates_updateCandidateTags + security: + - key: [] + - oauth: + - candidates_manage + description: >- + Update tags for a given candidate. It replaces all existing tags with + the new array provided. + requestBody: + description: Tags to be set. + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateTags' + required: true + responses: + '201': + description: Updated tags + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateTags' + '403': + description: No permission to access this candidate + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + delete: + tags: + - candidates + summary: Delete tags for a candidate + operationId: Candidates_removeTags + security: + - key: [] + - oauth: + - candidates_manage + description: >- + Delete tags for a given candidate. All tags associated with a candidate + are removed. + responses: + '204': + description: Candidate's tags successfully deleted + '403': + description: No permission to access this candidate + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /candidates/{id}/onboardingStatus: + parameters: + - $ref: '#/components/parameters/candidateId' + get: + tags: + - candidates + summary: Get Onboarding Status for a candidate + operationId: Candidates_getOnboardingStatus + security: + - key: [] + - oauth: + - candidates_read + description: >- + Get Onboarding Status for a candidate. Please use `GET + /candidates/{id}/jobs/{jobId}/onboardingStatus` instead. + responses: + '200': + description: Onboarding status + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardingStatus' + '403': + description: > + with codes: + + * **NO_ACCESS_TO_CANDIDATE** when Onboarding Status is not accesible + with assigned permissions. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **CANDIDATE_NOT_FOUND** when candidate not found, + + * **ONBOARDING_STATUS_NOT_ACTIVE** when Onboarding Status candidate + property is not activated, + + * **CANDIDATE_FIELDS_FEATURE_MISSING** when Onboarding Status is not + accessible. Required feature: 'Candidate Fields'. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + deprecated: true + put: + tags: + - candidates + summary: Set Onboarding Status for a candidate + operationId: Candidates_setOnboardingStatus + security: + - key: [] + - oauth: + - candidates_manage + description: >- + Set Onboarding Status for a candidate. Please use `PUT + /candidates/{id}/jobs/{jobId}/onboardingStatus` instead. + requestBody: + $ref: '#/components/requestBodies/OnboardingStatus' + responses: + '204': + description: Onboarding status successfully updated. + '403': + description: > + with codes: + + * **NO_ACCESS_TO_CANDIDATE** when Onboarding Status is not editable + with assigned permissions. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **CANDIDATE_NOT_FOUND** when candidate not found, + + * **ONBOARDING_STATUS_NOT_ACTIVE** when Onboarding Status custom + candidate property is not activated, + + * **CANDIDATE_FIELDS_FEATURE_MISSING** when Onboarding Status is not + accessible. Required feature: 'Candidate Fields'. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + deprecated: true + /candidates/{id}/jobs/{jobId}/onboardingStatus: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + get: + tags: + - candidates + summary: Get Onboarding Status for a candidate associated with given job + operationId: Candidates_getOnboardingStatus + security: + - key: [] + - oauth: + - candidates_read + description: Get Onboarding Status for a candidate associated with given job. + responses: + '200': + description: Onboarding status. + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardingStatus' + '403': + description: > + with codes: + + * **NO_ACCESS_TO_CANDIDATE** when Onboarding Status is not + accessible with assigned permissions. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **CANDIDATE_NOT_FOUND** when candidate not found, + + * **JOB_NOT_FOUND** when candidate is not assigned to given job, + + * **ONBOARDING_STATUS_NOT_ACTIVE** when Onboarding Status candidate + property is not activated, + + * **CANDIDATE_FIELDS_FEATURE_MISSING** when Onboarding Status is not + accessible. Required feature: 'Candidate Fields'. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + put: + tags: + - candidates + summary: Sets Onboarding Status for a candidate associated with given job + operationId: Candidates_setOnboardingStatus + security: + - key: [] + - oauth: + - candidates_manage + description: Sets Onboarding Status for a candidate associated with given job. + requestBody: + $ref: '#/components/requestBodies/OnboardingStatus' + responses: + '204': + description: Onboarding status successfully updated. + '403': + description: > + with codes: + + * **NO_ACCESS_TO_CANDIDATE** when Onboarding Status is not editable + with assigned permissions. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **CANDIDATE_NOT_FOUND** when candidate not found, + + * **JOB_NOT_FOUND** when candidate is not assigned to given job, + + * **ONBOARDING_STATUS_NOT_ACTIVE** when Onboarding Status candidate + property is not activated, + + * **CANDIDATE_FIELDS_FEATURE_MISSING** when Onboarding Status is not + accessible. Required feature: 'Candidate Fields'. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /candidates: + get: + tags: + - candidates + summary: Search candidates + operationId: Candidates_searchResults + security: + - key: [] + - oauth: + - candidates_read + description: >- + Only candidates matching all specified criteria and having at least one + job application are returned. + parameters: + - description: >- + keyword search, for more infromation see [SmartRecruiters + HelpCenter](https://help.smartrecruiters.com/Getting_Started/Platform/Searching_candidates_via_Candidate_API) + in: query + name: q + schema: + type: string + - description: number of elements to return. max value is 100 + in: query + name: limit + schema: + type: integer + minimum: 1 + maximum: 100 + default: 10 + - description: > + page identifier of elements to return + + + The `pageId` param can be used to fetch multiple page response, in + case + + the number of results is higher than max number of elements to + return (specified in the `limit` parameter). + + The `pageId` should not be present when requesting the first page of + results. + + The pageId of the following page is returned either in the + `nextPageId` property, or is available + + in the HTTP header `Link` value of relation type `next`. + + Example of the `Link` header: + + ``` + + ; + rel="next" + + ``` + in: query + name: pageId + schema: + type: string + - description: >- + job filter to display candidates who applied for a job [id]; can be + used repeatedly; + in: query + name: jobId + explode: true + schema: + type: array + items: + type: string + - description: >- + location keyword search which looks up a string in a candidate’s + location data; can be used repeatedly; case insensitive; e.g. Krakow + in: query + name: location + explode: true + schema: + type: array + items: + type: string + - description: >- + average rating filter to display candidates with a specific average + rating (integer); can be used repeatedly; e.g. 4 + in: query + name: averageRating + deprecated: true + explode: true + schema: + type: array + items: + type: integer + maximum: 5 + minimum: 1 + - description: >- + candidate’s status filter in a context of a job; can be used + repeatedly + in: query + name: status + explode: true + schema: + type: array + items: + type: string + enum: + - LEAD + - NEW + - IN_REVIEW + - INTERVIEW + - OFFERED + - HIRED + - REJECTED + - WITHDRAWN + - TRANSFERRED + - description: candidate’s consent status filter; can be used repeatedly + in: query + name: consentStatus + explode: true + schema: + type: array + items: + $ref: '#/components/schemas/ConsentStatus' + - description: >- + candidate’s sub-status filter in a context of a job. Works only in a + correlation with a set value for the "status" field. + in: query + name: subStatus + schema: + type: string + - description: >- + tag assigned to a candidate; can be used repeatedly; case + insensitive; e.g. fluent english + in: query + name: tag + explode: true + schema: + type: array + items: + type: string + - description: >- + ISO8601-formatted time boundaries for the candidate update time, + Format: yyyy-MM-ddTHH:mm:ss.SSSZZ + in: query + name: updatedAfter + schema: + type: string + format: date-time + - description: candidate's onboarding status + in: query + name: onboardingStatus + schema: + type: string + enum: + - READY_TO_ONBOARD + - ONBOARDING_SUCCESSFUL + - ONBOARDING_FAILED + - description: >- + candidate's property id (1-N). Currently it is only possible to + filter by single-select application fields. Other application field + type filtering is not possible. + in: query + name: propertyId + explode: true + schema: + type: array + items: + type: string + default: [] + - description: candidate's property value id (1-N) + in: query + name: propertyValueId + explode: true + schema: + type: array + items: + type: string + default: [] + - description: candidate's source type (1-N) + in: query + name: sourceType + explode: true + schema: + type: array + items: + type: string + default: [] + - description: candidate's source subtype (1-N) + in: query + name: sourceSubType + explode: true + schema: + type: array + items: + type: string + default: [] + - description: candidate's source value id (1-N) + in: query + name: sourceValueId + explode: true + schema: + type: array + items: + type: string + default: [] + - description: screening question category (1-N) + in: query + name: questionCategory + explode: true + schema: + type: array + items: + type: string + default: [] + - description: screening question field id (1-N) + in: query + name: questionFieldId + explode: true + schema: + type: array + items: + type: string + default: [] + - description: screening question field value id (1-N) + in: query + name: questionFieldValueId + explode: true + schema: + type: array + items: + type: string + default: [] + responses: + '200': + description: Candidates matching search criteria + content: + application/json: + schema: + $ref: '#/components/schemas/Candidates' + headers: + Link: + description: > + Links to related resources, in the format defined by + + [RFC 5988](https://tools.ietf.org/html/rfc5988#section-5). + + This will include a link with relation type `next` to the + + next page (containing `pageId` query parameter), if there is a + next page. + schema: + type: string + '400': + description: > + with codes + + * **FIELDS_CRITERIA_SIZE_VIOLATED** when number of elements of query + param `propertyId` is not + equal to number of elements of query param `propertyValueId` + * **SOURCES_CRITERIA_SIZE_VIOLATED** when number of elements of + query param `sourceType` is not + equal to number of elements of query param `sourceSubType` or not + equal to number of elements of query param `sourceValueId` + * **SCREENING_QUESTIONS_CRITERIA_SIZE_VIOLATED** when number of + elements of query param `questionCategory` is not + equal to number of elements of query param `questionFieldId` or not + equal to number of elements of query param `questionFieldValueId` + * **ONBOARDING_STATUS_NOT_ACTIVE** when Onboarding Status candidate + property is not activated or user's + company does not have candidate property feature, but user has requested to search candidates by + onboardingStatus query parameter + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + post: + tags: + - candidates + summary: Create a new candidate and assign to a Talent Pool + operationId: Candidates_createWithSourceDetails + security: + - key: [] + - oauth: + - candidates_create + description: > + Create a new candidate and assign to a Talent Pool. + + + **Tracking candidate source** + + + When adding a new candidate, it's very important you track its source + appropriately. In order to associate a source with your app/integration, + add below object to a candidate body object for this endpoint: + + ``` + + { + "sourceDetails": { + "sourceTypeId": "string", + "sourceSubTypeId": "string", + "sourceId": "string" + } + } + + ``` + + **sourceTypeId** - it's a Source Type - available values can be found + using [get + /configuration/sources](https://developers.smartrecruiters.com/reference/configurationsourcetypes-1) + endpoint + + + **sourceSubTypeId** - it's a Source Subtype, an optional parameter - + available values can be found using [get + /configuration/sources](https://developers.smartrecruiters.com/reference/configurationsourcetypes-1) + endpoint + + + **sourceId** - it's a Source Id - available values for a given + sourceTypeId can be found using [get + /configuration/sources/:sourceTypeId/values](https://developers.smartrecruiters.com/reference/configurationsourcevaluesall-1) + endpoint + + + NOTE: Not defining the source will default to **API** source. + + + NOTE II: In case you can't find an appropriate source to track against + you can: + + * Create a custom source for each customer account separately on [this + admin + page](https://www.smartrecruiters.com/settings/configuration/custom-sources) + (you need to be logged in as an admin to the customer account in order + to view this page) + + * Request to + [partners@smartrecruiters.com](mailto:partners@smartrecruiters.com) + adding a standard source that will be available for all customers if + your app/integration is productised (available to all SmartRecruiters + customers) + requestBody: + $ref: '#/components/requestBodies/CandidateInput' + responses: + '201': + description: Created candidate. + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateDetails' + '400': + description: > + with codes + + * **SOURCE_NOT_FOUND** when provided source does not exist, + + * **SUBTYPE_REQUIRED** when there are more sources and subtype + parameter is required + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + with code **PERMISSION_DENIED** when you are not permitted to create + candidate + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with code **SOURCE_TYPE_NOT_FOUND** when provided source type does + not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /candidates/cv: + post: + tags: + - candidates + summary: Parse a resume, create a candidate and assign to a Talent Pool. + operationId: Candidates_parseResumeAndAssignToTalentPool + security: + - key: [] + - oauth: + - candidates_create + description: Parse a resume, create a candidate and assign to a Talent Pool. + requestBody: + $ref: '#/components/requestBodies/Resume' + responses: + '201': + description: Created candidate. + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateDetails' + '400': + description: > + with codes + + * **SOURCE_NOT_FOUND** when provided source does not exist, + + * **SUBTYPE_REQUIRED** when there are more sources and subtype + parameter is required, + + * **UNPARSABLE_RESUME** when provided resume cannot be parsed, e.g. + an image + + * **INCOMPLETE_RESUME** when provided resume does not contain all + required information to create a candidate. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + with code **PERMISSION_DENIED** when you are not permitted to create + candidate + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + **SOURCE_TYPE_NOT_FOUND** when provided source type does not exist. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /candidates/consent-requests: + post: + tags: + - candidates + summary: Request consent from multiple candidates + operationId: Candidates_requestConsentFromMultiple + security: + - key: [] + - oauth: + - candidates_manage + description: > + Read more about GDPR tools on [SmartRecruiters + HelpCenter](https://help.smartrecruiters.com/GDPR/GDPR_Tools_for_Companies) + requestBody: + required: true + $ref: '#/components/requestBodies/BatchConsentRequest' + responses: + '201': + description: > + Consent requests has been scheduled. + + + The response contains a list of results for each individual consent + request in the same order as in the request. + + + A single result `status` property value could be: + + * 202 - consent request successfully scheduled, + + * 403 - cannot request consent from candidate as no privacy policy + has been configured. + content: + application/json: + schema: + $ref: '#/components/schemas/ConsentRequestsResults' + /candidates/{id}/consent: + parameters: + - $ref: '#/components/parameters/candidateId' + get: + tags: + - candidates + summary: Status of candidate consent + operationId: Candidates_getStatusOfConsent + security: + - key: [] + - oauth: + - candidates_read + description: Get candidate consent status + responses: + '200': + description: Candidate's latest consent status + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateConsentStatus' + '403': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /candidates/{id}/consents: + parameters: + - $ref: '#/components/parameters/candidateId' + get: + tags: + - candidates + summary: Candidate consent decisions + operationId: Candidates_getConsentDecisions + security: + - key: [] + - oauth: + - candidates_read + description: > + Depending on the consent approach which a customer chooses, the response + will either contain one candidates' + + consent decision - known as "single consent" - or contain one + candidates' consent broken out by the data scopes + + which the customer has subscribed to - such as SmartRecruit and + SmartCRM. This is referred to as "separated consent". + + Provided there is at least one pending consent request (without a + decision) for a candidate, the response + + contains a date and time of the most recent of such consent requests. + + + Read more about GDPR tools on [SmartRecruiters + HelpCenter](https://help.smartrecruiters.com/GDPR/GDPR_Tools_for_Companies) + responses: + '200': + description: Candidate's consent decisions + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateConsentDecisions' + '403': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /candidates/{id}: + parameters: + - $ref: '#/components/parameters/candidateId' + get: + tags: + - candidates + summary: Get details of a candidate + operationId: Candidates_getDetails + security: + - key: [] + - oauth: + - candidates_read + description: Get details of a candidate + responses: + '200': + description: Candidate details + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateDetails' + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + delete: + tags: + - candidates + summary: Delete Candidate + operationId: Candidates_removeCandidateById + security: + - key: [] + - oauth: + - candidates_manage + description: Delete candidate + responses: + '204': + description: Candidate successfully deleted + '403': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Candidate not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + patch: + tags: + - candidates + summary: Update candidate personal information + operationId: Candidates_updatePersonalInfo + security: + - key: [] + - oauth: + - candidates_manage + description: Update candidate details + requestBody: + description: Candidate personal information + content: + application/json: + schema: + $ref: '#/components/schemas/PersonalDetails' + responses: + '200': + description: Candidate updated + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateDetails' + '403': + description: >- + with code **PERMISSION_DENIED** when you are not permitted to update + candidate details + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code: + * **CANDIDATE_NOT_FOUND** when candidate not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /candidates/{id}/attachments: + parameters: + - $ref: '#/components/parameters/candidateId' + get: + tags: + - candidates + summary: Get list candidate's attachments. + operationId: Candidates_listAttachments + security: + - key: [] + - oauth: + - candidates_read + description: Get list of candidate's attachments. + responses: + '200': + description: Candidate's attachments + content: + application/json: + schema: + $ref: '#/components/schemas/Attachments' + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Attachment file access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + deprecated: true + post: + tags: + - candidates + summary: Attach files to a candidate. + operationId: Candidates_attachFiles + security: + - key: [] + - oauth: + - candidates_create + description: Attach files to a candidate. + requestBody: + content: + multipart/form-data: + schema: + $ref: '#/components/schemas/CandidatesAttachFilesRequest' + responses: + '201': + description: Candidate's attachment + content: + application/json: + schema: + $ref: '#/components/schemas/Attachment' + '400': + description: > + with codes: + + * **FILE_ALREADY_EXIST** when file aleady exists, + + * **INVALID_FILE** when file extension not allowed, corrupted file + or wrong file type. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: >- + with code **ATTACHMENT_LIMIT_EXCEEDED** when no more files can be + added to candidate. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + deprecated: true + /candidates/{id}/attachments/{attachmentId}: + parameters: + - $ref: '#/components/parameters/candidateId' + get: + tags: + - candidates + summary: Get a candidate's attachment. + operationId: Candidates_getAttachmentById + security: + - key: [] + - oauth: + - candidates_read + description: Get a candidate's attachment. + parameters: + - description: Identifier of an attachment + in: path + name: attachmentId + required: true + schema: + type: string + responses: + '200': + description: Attachment content + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: with code FILE_NOT_FOUND when file does not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + deprecated: true + /candidates/{id}/jobs/{jobId}/attachments: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + get: + tags: + - candidates + summary: Get list of candidate's attachments in context of given job. + operationId: Candidates_getAttachmentsByJobId + security: + - key: [] + - oauth: + - candidates_read + description: Get list of candidate's attachments in context of given job. + responses: + '200': + description: Candidate's attachments in context of given job. + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateAttachmentsForJob' + '403': + description: >- + with code **PERMISSION_DENIED** when you are not permitted to view + candidate attachments in context of given job. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: >- + with code **JOB_NOT_FOUND** when candidate is not assigned to given + job. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + post: + tags: + - candidates + summary: Attach file to candidate in context of given job. + operationId: Candidates_attachFileToJobCandidate + security: + - key: [] + - oauth: + - candidates_create + description: Attach file to candidate in context of given job. + requestBody: + content: + multipart/form-data: + schema: + $ref: '#/components/schemas/CandidatesAttachFileToJobCandidateRequest' + responses: + '201': + description: Candidate's attachment in context of given job. + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateAttachmentForJob' + '400': + description: > + with codes: + + * **FILE_ALREADY_EXIST** when file already exists, + + * **INVALID_FILE** when file extension not allowed, corrupted file + or wrong file type. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + with code **PERMISSION_DENIED** when you are not permitted to add + file to candidate in context of given job. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: >- + with code **JOB_NOT_FOUND** when candidate is not assigned to given + job. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: >- + with code **ATTACHMENT_LIMIT_EXCEEDED** when no more files can be + added to candidate in context of given job. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /candidates/attachments/{attachmentId}: + parameters: + - $ref: '#/components/parameters/attachmentId' + get: + tags: + - candidates + summary: Get candidate's attachment. + operationId: Candidates_getAttachment + security: + - key: [] + - oauth: + - candidates_read + description: Get candidate's attachment. + responses: + '200': + description: Candidate's Attachment + '403': + description: > + with codes: + + * **PERMISSION_DENIED** when you are not permitted to download + attachment, + + * **MALWARE_DETECTED** when file has been marked as malicious. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: with code **FILE_NOT_FOUND** when attachment does not exist. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + delete: + tags: + - candidates + summary: Delete attachment. + operationId: Candidates_deleteAttachment + security: + - key: [] + - oauth: + - candidates_manage + description: Delete attachment. + responses: + '204': + description: Attachment successfully deleted + '403': + description: >- + with code **PERMISSION_DENIED** when you are not permitted to delete + attachment. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: with code **FILE_NOT_FOUND** when attachment does not exist. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /candidates/{id}/jobs/{jobId}/status: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + put: + tags: + - candidates + summary: Update a candidate's status + operationId: Candidates_updateStatus + security: + - key: [] + - oauth: + - candidates_manage + description: Update a candidate's status + requestBody: + $ref: '#/components/requestBodies/CandidateStatus' + responses: + '204': + description: '' + '400': + description: > + with codes + + * **NO_REASON_SUPPORT_FOR_STATUS** when reason is not available for + given status (availably only for REJECTED and WITHDRAWN) + + * **REASON_NOT_FOUND** when given reason does not exist + + * **REQUIRED_SUB_STATUS_OMITTED** when there is a required sub + status before the status you want to move a candidate to + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with codes + + * **PERMISSION_DENIED** when you are not permitted to update + candidate's status + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Candidate is not assigned to given job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /candidates/{id}/status: + parameters: + - $ref: '#/components/parameters/candidateId' + put: + tags: + - candidates + summary: Update a candidate's status on primary assignment + operationId: Candidates_updateStatusOnPrimaryAssignment + security: + - key: [] + - oauth: + - candidates_manage + description: >- + Update a candidate's status on primary assignment. Please use `PUT + /candidates/{id}/jobs/{jobId}/status` instead. + requestBody: + $ref: '#/components/requestBodies/CandidateStatus' + responses: + '204': + description: '' + '400': + description: > + with codes + + * **NO_REASON_SUPPORT_FOR_STATUS** when reason is not available for + given status (availably only for REJECTED and WITHDRAWN) + + * **REASON_NOT_FOUND** when given reason does not exist + + * **REQUIRED_SUB_STATUS_OMITTED** when there is a required sub + status before the status you want to move a candidate to + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with codes + + * **PERMISSION_DENIED** when you are not permitted to update + candidate's status + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + deprecated: true + /candidates/{id}/status/history: + parameters: + - $ref: '#/components/parameters/candidateId' + get: + tags: + - candidates + summary: Get candidate's status history + operationId: Candidates_getStatusHistory + security: + - key: [] + - oauth: + - candidates_read + - candidate_status_read + description: >- + Get candidate's status history. Please use `GET + /candidates/{id}/jobs/{jobId}/status/history` instead. + responses: + '200': + description: Candidate's status history + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateStatusHistoryList' + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + deprecated: true + /candidates/{id}/jobs/{jobId}/status/history: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + get: + tags: + - candidates + summary: Get candidate's status history for a candidate's job + operationId: Candidates_getStatusHistory + security: + - key: [] + - oauth: + - candidates_read + - candidate_status_read + description: Get candidate's status history for a candidate's job + responses: + '200': + description: Candidate's status history + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateStatusHistoryList' + '403': + description: > + with code **NO_ACCESS_TO_CANDIDATE** when not permitted to see this + candidate + + with code **NO_ACCESS_TO_JOB** when not permitted to see this + candidate in context of given job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with code **CANDIDATE_NOT_FOUND** when candidate not found + + with code **JOB_NOT_FOUND** when candidate is not assigned to given + job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /candidates/{id}/jobs/{jobId}/source: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + put: + tags: + - candidates + summary: Update a candidate's source + operationId: Candidates_updateSource + security: + - key: [] + - oauth: + - candidates_manage + description: Update a candidate's source + requestBody: + description: Candidate source to be set + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateSource' + required: true + responses: + '204': + description: '' + '400': + description: > + with codes: + + * **INVALID_SOURCE_TYPE** when provided type does not exist, + + * **SUBTYPE_REQUIRED** when there are more sources and subtype + parameter is required, + + * **INVALID_SOURCE** when source id does not exist in provided type. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Candidate is not assigned to given job. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /candidates/{id}/properties: + parameters: + - $ref: '#/components/parameters/candidateId' + get: + tags: + - candidates + summary: Get candidate property values for a candidate + operationId: Candidates_getPropertyValues + security: + - key: [] + - oauth: + - candidates_read + description: | + Please use `GET /candidates/{id}/jobs/{jobId}/properties` instead. + Returns + ``` + {} + ``` + when there is no value set for a candidate property. + parameters: + - description: context for candidate properties to display + in: query + name: context + schema: + type: string + enum: + - PROFILE + - OFFER_FORM + - HIRE_FORM + - OFFER_APPROVAL_FORM + responses: + '200': + description: Candidate property values. + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateProperties' + '403': + description: Candidate properties access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code **CANDIDATE_NOT_FOUND** when candidate does not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + deprecated: true + /candidates/{id}/jobs/{jobId}/properties: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + get: + tags: + - candidates + summary: Get candidate property values for a candidate's job + operationId: Candidates_getPropertyValuesForJob + security: + - key: [] + - oauth: + - candidates_read + description: | + Returns + ``` + {} + ``` + when there is no value set for a candidate property. + parameters: + - description: context for candidate properties to display + in: query + name: context + schema: + type: string + enum: + - PROFILE + - OFFER_FORM + - HIRE_FORM + - OFFER_APPROVAL_FORM + responses: + '200': + description: Candidate property values. + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateProperties' + '403': + description: Candidate properties access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with code **JOB_NOT_FOUND** when candidate is not assigned to given + job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + put: + tags: + - candidates + summary: Add/update candidate properties values + operationId: Candidates_updateCandidateProperties + security: + - key: [] + - oauth: + - candidates_manage + description: > + Set candidate properties values for the candidate's job + + + Below you can find a list of value examples, dependent on different + + candidate property types. + + + ### BOOLEAN + + + ``` + + [{ "id": "propertyId", "value": true }] + + ``` + + + Value has to be `true` or `false`. + + + ### COUNTRY + + + ``` + + [{ "id": "propertyId", "value": "us" }] + + ``` + + + Value has to be lowercase string in ISO 3166-1 alpha-2 format. + + + ### CURRENCY + + + ``` + + [{ "id": "propertyId", + "value": { + "code": "GBP", + "value": 23232 + } + }] + ``` + + + Code of value is a currency code in ISO 4217 format. + + + ### DATE + + + ``` + + [{ "id": "propertyId", "value": "2015-11-17T23:00:00.000Z" }] + + ``` + + + ### NUMBER, PERCENT + + + ``` + + [{ "id": "propertyId", "value": 42 }] + + ``` + + + ### REGION + + + ``` + + [{ "id": "propertyId", "value": "us-wa" }] + + ``` + + + Value has to be lowercase string in ISO 3166-2 compatible format. + + + ### SINGLE_SELECT + + + ``` + + [{ "id": "propertyId", "value": "f6fe768f-b5e6-4794-9938-c2f42ab0a572" + }] + + ``` + + + Value has to be an id of candidate property value (provided by `GET + + /configuration/candidate-properties/{propertyId}/values`). + + + ### TEXT + + + ``` + + [{ "id": "propertyId", "value": "Example text" }] + + ``` + + + ### USER + + + ``` + + [{ "id": "propertyId", "value": "50fe861de4b00265edec6775" }] + + ``` + + + Value has to be a valid user id + + + ### Resetting a value + + + To reset a value for any of the above types, please pass: + + + ``` + + [{"id": "propertyId"}] + + ``` + requestBody: + $ref: '#/components/requestBodies/BatchCandidatePropertyValue' + responses: + '204': + description: Properties successfully updated. + '400': + description: > + with codes + + * **COUNTRY_NOT_FOUND** when candidate property of COUNTRY type and + country with provided code does not exist, + + * **REGION_NOT_FOUND** when candidate property of REGION type and + region with provided code does not exist, + + * **USER_NOT_FOUND** when candidate property of USER type and user + with provided id does not exist, + + * **CURRENCY_NOT_FOUND** when candidate property of CURRENCY type + and currency with provided code does not exist, + + * **VALUE_NOT_FOUND** when candidate property of SINGLE_SELECT type + and value with provided id does not exist, + + * **INVALID_TEXT_FORMAT** when candidate property of TEXT type and + its value contains forbidden characters + + * **INVALID_EMAIL_FORMAT** when candidate property of TEXT type + (with enabled email validation) and its value contains invalid email + address + + * **INVALID_TEXT_PATTERN_FORMAT** when candidate property of TEXT + type (with enabled custom text pattern validation) and its value + contains value that does not match the pattern + + * **INACCESSIBLE_FIELD** when candidate property cannot be set due + to its own configuration + + * **DUPLICATE_PROPERTIES** when request contains multiple candidate + properties with the same id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Candidate properties access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes + + * **PROPERTY_NOT_FOUND** when one of the provided candidate + properties does not exist + + * **JOB_NOT_FOUND** when candidate is not assigned to given job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /candidates/{id}/properties/{propertyId}: + parameters: + - $ref: '#/components/parameters/candidateId' + put: + tags: + - candidates + summary: Add/update candidate property value + operationId: Candidates_updatePropertyValue + security: + - key: [] + - oauth: + - candidates_manage + description: > + Please use `PUT /candidates/{id}/jobs/{jobId}/properties` instead. Set a + candidate property value for the candidate. + + Below you can find a list of value examples, dependent on different + candidate property types. + + * **BOOLEAN** + + ``` + + { "value": true } + + ``` + + Value has to be `true` or `false`. + + * **COUNTRY** + + ``` + + { "value": "us" } + + ``` + + Value has to be lowercase string in ISO 3166-1 alpha-2 format. + + * **CURRENCY** + + ``` + + { + "value": { + "code": "GBP", + "value": 23232 + } + } + + ``` + + Code of value is a currency code in ISO 4217 format. + + * **DATE** + + ``` + + { "value": "2015-11-17T23:00:00.000Z" } + + ``` + + * **NUMBER, PERCENT** + + ``` + + { "value": 42 } + + ``` + + * **REGION** + + ``` + + { "value": "us-wa" } + + ``` + + Value has to be lowercase string in ISO 3166-2 compatible format. + + * **SINGLE_SELECT** + + ``` + + { "value": "f6fe768f-b5e6-4794-9938-c2f42ab0a572" } + + ``` + + Value has to be an id of candidate property value (provided by GET + /configuration/candidate-properties/{propertyId}/values). + + * **TEXT** + + ``` + + { "value": "Example text" } + + ``` + + * **USER** + + ``` + + { "value": "50fe861de4b00265edec6775" } + + ``` + + Value has to be a valid user id + + + To reset a value for any of the above types, please pass + + ``` + + {} + + ``` + parameters: + - description: Identifier of a Candidate Property + in: path + name: propertyId + required: true + schema: + type: string + requestBody: + $ref: '#/components/requestBodies/CandidatePropertyInputValue' + responses: + '204': + description: Property successfully updated. + '400': + description: > + with codes + + * **COUNTRY_NOT_FOUND** when candidate property of COUNTRY type and + country with provided code does not exist, + + * **REGION_NOT_FOUND** when candidate property of REGION type and + region with provided code does not exist, + + * **USER_NOT_FOUND** when candidate property of USER type and user + with provided id does not exist, + + * **CURRENCY_NOT_FOUND** when candidate property of CURRENCY type + and currency with provided code does not exist, + + * **INVALID_TEXT_FORMAT** when candidate property of TEXT type and + its value contains forbidden characters + + * **INVALID_EMAIL_FORMAT** when candidate property of TEXT type + (with enabled email validation) and its value contains invalid email + address + + * **INVALID_TEXT_PATTERN_FORMAT** when candidate property of TEXT + type (with enabled custom text pattern validation) and its value + contains value that does not match the pattern + + * **INACCESSIBLE_FIELD** when candidate property cannot be set due + to its own configuration + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Candidate properties access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with code **PROPERTY_NOT_FOUND** when candidate property does not + exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + deprecated: true + /candidates/{id}/jobs/{jobId}/properties/{propertyId}: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + put: + tags: + - candidates + summary: Add/update candidate property value + operationId: Candidates_updatePropertyValue + security: + - key: [] + - oauth: + - candidates_manage + description: | + Please use `PUT /candidates/{id}/jobs/{jobId}/properties` instead. + + Set a candidate property value for the candidate. + + Below you can find a list of value examples, dependent on different + candidate property types. + + ### BOOLEAN + + ``` + { "value": true } + ``` + + Value has to be `true` or `false`. + + ### COUNTRY + + ``` + { "value": "us" } + ``` + + Value has to be lowercase string in ISO 3166-1 alpha-2 format. + + ### CURRENCY + + ``` + { + "value": { + "code": "GBP", + "value": 23232 + } + } + ``` + + Code of value is a currency code in ISO 4217 format. + + ### DATE + + ``` + { "value": "2015-11-17T23:00:00.000Z" } + ``` + + ### NUMBER, PERCENT + + ``` + { "value": 42 } + ``` + + ### REGION + + ``` + { "value": "us-wa" } + ``` + + Value has to be lowercase string in ISO 3166-2 compatible format. + + ### SINGLE_SELECT + + ``` + { "value": "f6fe768f-b5e6-4794-9938-c2f42ab0a572" } + ``` + + Value has to be an id of candidate property value (provided by `GET + /configuration/candidate-properties/{propertyId}/values`). + + ### TEXT + + ``` + { "value": "Example text" } + ``` + + ### USER + + ``` + { "value": "50fe861de4b00265edec6775" } + ``` + + Value has to be a valid user id + + ### Resetting a value + + To reset a value for any of the above types, please pass: + + ``` + {} + ``` + parameters: + - description: Identifier of a Candidate Property + in: path + name: propertyId + required: true + schema: + type: string + requestBody: + $ref: '#/components/requestBodies/CandidatePropertyInputValue' + responses: + '204': + description: Property successfully updated. + '400': + description: > + with codes + + * **COUNTRY_NOT_FOUND** when candidate property of COUNTRY type and + country with provided code does not exist, + + * **REGION_NOT_FOUND** when candidate property of REGION type and + region with provided code does not exist, + + * **USER_NOT_FOUND** when candidate property of USER type and user + with provided id does not exist, + + * **CURRENCY_NOT_FOUND** when candidate property of CURRENCY type + and currency with provided code does not exist, + + * **VALUE_NOT_FOUND** when candidate property of SINGLE_SELECT type + and value with provided id does not exist, + + * **INVALID_TEXT_FORMAT** when candidate property of TEXT type and + its value contains forbidden characters + + * **INVALID_EMAIL_FORMAT** when candidate property of TEXT type + (with enabled email validation) and its value contains invalid email + address + + * **INVALID_TEXT_PATTERN_FORMAT** when candidate property of TEXT + type (with enabled custom text pattern validation) and its value + contains value that does not match the pattern + + * **INACCESSIBLE_FIELD** when candidate property cannot be set due + to its own configuration + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Candidate properties access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes + * **PROPERTY_NOT_FOUND** when candidate property does not exist + * **JOB_NOT_FOUND** when candidate is not assigned to given job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + deprecated: true + /candidates/{id}/jobs/{jobId}/screening-answers: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + get: + tags: + - candidates + summary: Get candidate screening answers for a candidate's job + operationId: Candidates_getScreeningAnswersByJob + security: + - key: [] + - oauth: + - candidates_read + description: > + Returns candidate screening question answers for a candidate's job. + Returns an empty array when there is no screening answers for given + candidate's job. + + + UUID in question category indicates custom question. Other value + indicates predefined library question. + + + In order to create human readable format of answers please use label + properties. Ignore labels for answers with single field. + + Based on labels from included example you can get following text: + + + ```text + + Do you have a current driver's license? + - No + + Free text question + - Long text answer for free text questions + + Checkbox question + - Confirmed + + Legacy acknowledgment question - replaced by checkbox + - Confirmed + + Gender, Race and Ethnicity + [(definitions)](https://smartrecruiters.com/oneclick/static/html/en/eeoGeneral.html) + - Gender: Male + - Race/Ethnicity: Prefer not to answer + + Currency question + - 1234 + + Multiple choice dropdown + - third value, second value, first value + + Languages + 1) + - Language: English + - Proficiency level: Advanced + 2) + - Language: Spanish + - Proficiency level: Beginner + 3) + - Language: French + - Proficiency level: Intermediate + + What are your preferred work shifts? + + 1) + - Day: Weekdays + - From: 08:00 AM + - To: 04:00 PM + 2) + - Day: Weekdays + - From: 10:00 AM + - To: 02:00 PM + + Your Name + - John + ``` + responses: + '200': + description: Candidate screening question answers for a candidate's job + content: + application/json: + schema: + $ref: '#/components/schemas/ScreeningAnswers' + example: + totalFound: 10 + content: + - id: 0e91d24a-d85b-487d-99ef-eeaca7277d77 + type: radio + category: drivingCurrent + name: Driving Current + label: Do you have a current driver's license? + records: + - fields: + - id: value + label: Value + values: + - id: '0' + label: 'No' + - id: a00c06fb-6693-4138-a005-57c92ab796b6 + type: textarea + category: 04f8fac1-8799-47ef-af54-7dcc4cd10bb9 + name: Free text question + label: Free text question + records: + - fields: + - id: valueX + label: Value + values: + - id: Long text answer for free text questions + label: Long text answer for free text questions + - id: a98ba616-d7ed-43e5-b5b5-23a9eca031e3 + type: checkbox + category: ba9acad1-71b3-42a1-a059-c05e1bbbc301 + name: Checkbox question + label: Checkbox question + records: + - fields: + - id: confirm + label: Checkbox question + values: + - id: '1' + label: Confirmed + - id: eb93fc47-6f72-4d97-a60e-a265f8621e84 + type: checkbox + category: 20ef7ecb-09c4-4afd-80fc-6a2700a1c3ba + name: Legacy acknowledgment question + label: Legacy acknowledgment question - replaced by checkbox + records: + - fields: + - id: confirmX + label: >- + Legacy acknowledgment question - replaced by + checkbox + values: + - id: 1X + label: Confirmed + - id: 40bc2e3b-fd1c-47e8-b514-2365fc705447 + type: eeo + category: eeoInformation + name: EEO - Race and Gender + label: >- + Gender, Race and Ethnicity + [(definitions)](https://smartrecruiters.com/oneclick/static/html/en/eeoGeneral.html) + records: + - fields: + - id: gender + label: Gender + values: + - id: 0X + label: Male + - id: ethnicity + label: Race/Ethnicity + values: + - id: '6' + label: Prefer not to answer + - id: f9ffb0eb-c8e7-4c18-bfa3-7fb22af7da03 + type: currency + category: b2e9b169-77a6-4425-b82a-8dd80c84005b + name: Currency question + label: Currency question + records: + - fields: + - id: amount + label: Value + values: + - id: '1234' + label: '1234' + - id: 910ceed4-a708-4c22-8c10-f53e1b053a7d + type: select + category: 445c45ae-8e5a-48c6-9e05-0846d35bfa6d + name: Multiple choice dropdown + label: Multiple choice dropdown + records: + - fields: + - id: valueX + label: Value + values: + - id: d6c2c580-5f51-4960-a6e5-a8bc8849f35c + label: third value + - id: 5e9cc528-9640-454d-8ef6-19bd06ce2ea9 + label: second value + - id: 10a341a3-b8ff-4121-9dee-75b442e64f00 + label: first value + - id: 1549f34c-fdda-459a-8c01-be8ab6cef19f + type: languages + category: languages + name: Languages + label: Languages + records: + - fields: + - id: lang + label: Language + values: + - id: English + label: English + - id: level + label: Proficiency level + values: + - id: '2' + label: Advanced + - fields: + - id: langX + label: Language + values: + - id: Spanish + label: Spanish + - id: levelX + label: Proficiency level + values: + - id: 0X + label: Beginner + - fields: + - id: langX + label: Language + values: + - id: French + label: French + - id: levelX + label: Proficiency level + values: + - id: 1X + label: Intermediate + - id: 2bb9faa5-dbe9-42dc-9c00-381dddb0abb6 + type: work_shifts + category: preferredWorkShifts + name: Work Shifts + label: What are your preferred work shifts? + records: + - fields: + - id: day + label: Day + values: + - id: 2X + label: Weekdays + - id: from + label: From + values: + - id: '8' + label: 08:00 AM + - id: to + label: To + values: + - id: '16' + label: 04:00 PM + - fields: + - id: dayX + label: Day + values: + - id: 2X + label: Weekdays + - id: fromX + label: From + values: + - id: '10' + label: 10:00 AM + - id: toX + label: To + values: + - id: '14' + label: 02:00 PM + - id: 6c0ed428-f167-4ab0-967d-564560617e7b + type: text + category: yourName + name: Your Name + label: Your Name + records: + - fields: + - id: valueX + values: + - id: John + label: John + '403': + description: Screening Question Answers access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Screening Question Answers not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /jobs/{jobId}/candidates: + parameters: + - $ref: '#/components/parameters/jobId' + post: + tags: + - candidates + summary: Create a new candidate and assign to a job + operationId: Candidates_createWithSource + security: + - key: [] + - oauth: + - candidates_create + description: > + Create a new candidate and assign to a job. + + + **Tracking candidate source** + + + When adding a new candidate, it's very important you track its source + appropriately. In order to associate a source with your app / + integration, add the below object to a candidate body object for this + endpoint: + + ``` + + { + "sourceDetails": { + "sourceTypeId": "string", + "sourceSubTypeId": "string", + "sourceId": "string" + } + } + + ``` + + **sourceTypeId** - it's a Source Type - available values can be found + using [get + /configuration/sources](https://developers.smartrecruiters.com/reference/configurationsourcetypes-1) + endpoint + + + **sourceSubTypeId** - it's a Source Subtype, an optional parameter - + available values can be found using [get + /configuration/sources](https://developers.smartrecruiters.com/reference/configurationsourcetypes-1) + endpoint + + + **sourceId** - it's a Source Id - available values for a given + sourceTypeId can be found using [get + /configuration/sources/:sourceTypeId/values](https://developers.smartrecruiters.com/reference/configurationsourcevaluesall-1) + endpoint + + + NOTE: Not defining the source will default to **API** source. + + + NOTE II: In case you can't find an appropriate source to track against + you can: + + * Create a custom source for each customer account separately on [this + admin + page](https://www.smartrecruiters.com/settings/configuration/custom-sources\) + (you need to be logged in as an admin to the customer account in order + to view this page) + + * Request to + [partners@smartrecruiters.com](mailto:partners@smartrecruiters.com) + adding a standard source that will be available for all customers if + your app / integration is productised (available to all SmartRecruiters + customers) + requestBody: + $ref: '#/components/requestBodies/CandidateInput' + responses: + '201': + description: Created candidate. + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateDetails' + '400': + description: > + with codes + + * **SOURCE_NOT_FOUND** when provided source does not exist, + + * **SUBTYPE_REQUIRED** when there are more sources and subtype + parameter is required + + * **INVALID_SOURCE_ID** when invalid source ID provided for a + specified sourceIdType. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: | + with code **PERMISSION_DENIED** when job access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + with code **PERMISSION_DENIED** when you are not permitted to create + candidate + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with code **SOURCE_TYPE_NOT_FOUND** when provided source type does + not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /jobs/{jobId}/candidates/cv: + parameters: + - $ref: '#/components/parameters/jobId' + post: + tags: + - candidates + summary: Parse a resume, create a candidate and assign to a job. + operationId: Candidates_parseResumeAndAssignToJob + security: + - key: [] + - oauth: + - candidates_create + description: Parse a resume, create a candidate and assign to a job. + requestBody: + $ref: '#/components/requestBodies/Resume' + responses: + '201': + description: Created candidate. + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateDetails' + '400': + description: > + with codes + + * **SOURCE_NOT_FOUND** when provided source does not exist, + + * **SUBTYPE_REQUIRED** when there are more sources and subtype + parameter is required + + * **UNPARSABLE_RESUME** when provided resume cannot be parsed, e.g. + an image + + * **INCOMPLETE_RESUME** when provided resume does not contain all + required information to create a candidate. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Job access denied. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + with code **PERMISSION_DENIED** when you are not permitted to create + candidate + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + **SOURCE_TYPE_NOT_FOUND** when provided source type does not exist. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /candidates/{id}/jobs/{jobId}: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + get: + tags: + - candidates + summary: Get details of a candidate's application to a job + operationId: Candidates_getApplicationDetails + security: + - key: [] + - oauth: + - candidates_read + description: Get details of a candidate's application to a job + responses: + '200': + description: Candidate's application + content: + application/json: + schema: + $ref: '#/components/schemas/Application' + '403': + description: Permission denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Application not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /configuration/company: + get: + tags: + - configuration + summary: Get company information + operationId: Configuration_getCompanyInformation + security: + - key: [] + - oauth: + - company_read + - configuration_read + description: Get all information about your company. + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CompanyConfiguration' + /configuration/job-properties: + get: + tags: + - configuration + summary: Get a list of available job properties + operationId: Configuration_getAvailableProperties + security: + - key: [] + - oauth: + - configuration_read + description: Get a list of available job properties. + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JobPropertyDefinitionList' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + post: + tags: + - configuration + summary: Create a job property + operationId: Configuration_createJobProperty + security: + - key: [] + - oauth: + - configuration_manage + description: Creates a job property + requestBody: + description: job property to be created + content: + application/json: + schema: + $ref: '#/components/schemas/JobPropertyDefinitionCreationRequest' + responses: + '201': + description: Created job property + content: + application/json: + schema: + $ref: '#/components/schemas/JobPropertyDefinition' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + With codes: + + * *JOB_PROPERTY_LIMIT_EXCEEDED* when job properties limit is + reached, + + * *DEFINITION_NAME_IS_NOT_ALLOWED* when job property name is + restricted. + /configuration/job-properties/{id}: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + get: + tags: + - configuration + summary: Get job property by id + operationId: Configuration_getPropertyById + security: + - key: [] + - oauth: + - configuration_read + description: Get job property by id + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JobPropertyDefinition' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Job property not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + patch: + tags: + - configuration + summary: Update a job property + operationId: Configuration_updateJobProperty + security: + - key: [] + - oauth: + - configuration_manage + description: Updates a job property. + requestBody: + $ref: '#/components/requestBodies/JSONPatch' + responses: + '200': + description: Updated job property + content: + application/json: + schema: + $ref: '#/components/schemas/JobPropertyDefinition' + '400': + description: Job property is not editable + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Job property not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + With code: + + * *DEFINITION_NAME_IS_NOT_ALLOWED* when job property name is + restricted. + /configuration/job-properties/{id}/translations: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + patch: + tags: + - configuration + summary: Add a job property's translations + operationId: Configuration_addJobPropertyTranslations + security: + - key: [] + - oauth: + - configuration_manage + description: Submit a job property's translations to different languages + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/LabelTranslations' + required: true + responses: + '204': + description: Translations accepted + '400': + description: | + with codes + * *PROPERTY_INVALID* - when value contains invalid characters + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes + * *JOB_PROPERTY_NOT_FOUND* - when job property not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: >- + There is more than one translation with the same language in the + input + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: 'Invalid input: missing required data, invalid format' + /configuration/job-properties/{id}/values: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + get: + tags: + - configuration + summary: Get available job property values + operationId: Configuration_getJobPropertyValues + security: + - key: [] + - oauth: + - configuration_read + description: Get available job property values. + parameters: + - $ref: '#/components/parameters/language' + - $ref: '#/components/parameters/pageId' + - $ref: '#/components/parameters/pageSize' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JobPropertyValueDefinitionList' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Job property not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + post: + tags: + - configuration + summary: Create a job property value + operationId: Configuration_createJobPropertyValue + security: + - key: [] + - oauth: + - configuration_manage + description: Creates a job property value. + requestBody: + description: job property object to be created + content: + application/json: + schema: + $ref: '#/components/schemas/JobPropertyValueDefinition' + responses: + '201': + description: Created job property value + content: + application/json: + schema: + $ref: '#/components/schemas/JobPropertyValueDefinition' + '400': + description: > + when value is invalid with codes: + + * *VALUES_NOT_ALLOWED* when values are not allowed (e.g. for free + text fields) + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: When job property not found. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: When job property value with given label already exists. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + when value id is invalid or with codes: + + * *ACTIVE_VALUES_LIMIT_REACHED* when limit of active job property + values is reached + + * *VALUES_LIMIT_REACHED* when the limit of job property values + (active and inactive) is reached + + * *VALUE_LABEL_IS_BLANK* when provided label is blank + + * *VALUE_LABEL_IS_INVALID* when provided label is not valid, e.g. + contains leading/trailing whitespaces + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /configuration/job-properties/{id}/values/{valueId}: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + - $ref: '#/components/parameters/jobPropertyValueId' + delete: + tags: + - configuration + summary: Archive a job property value + operationId: Configuration_archiveJobPropertyValue + security: + - key: [] + - oauth: + - configuration_manage + description: >- + Archive a job property value. Please use `PUT + /configuration/job-properties/{id}/archive-values/{valueId}` instead. + responses: + '204': + description: '' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * *JOB_PROPERTY_NOT_FOUND* when job property does not exist + + * *JOB_PROPERTY_VALUE_NOT_FOUND* when job property value does not + exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + deprecated: true + put: + tags: + - configuration + summary: Unarchive a job property value + operationId: Configuration_unarchiveJobPropertyValue + security: + - key: [] + - oauth: + - configuration_manage + description: >- + Unarchive a job property value. `DELETE + /configuration/job-properties/{id}/archive-values/{valueId}` instead. + responses: + '204': + description: '' + '404': + description: > + with codes: + + * *JOB_PROPERTY_NOT_FOUND* when job property does not exist + + * *JOB_PROPERTY_VALUE_NOT_FOUND* when job property value does not + exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + with codes: + + * *VALUE_LABEL_IS_INVALID* when value label contains invalid + characters. In order to unarchive the value, first update the label + with only valid characters. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + deprecated: true + patch: + tags: + - configuration + summary: Update a job property value + operationId: Configuration_updateJobPropertyValue + security: + - key: [] + - oauth: + - configuration_manage + description: >- + Update a job property value. Returns an updated job property value + object. + requestBody: + $ref: '#/components/requestBodies/JSONPatch' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JobPropertyValueDefinition' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * *JOB_PROPERTY_NOT_FOUND* when job property does not exist + + * *JOB_PROPERTY_VALUE_NOT_FOUND* when job property value does not + exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: When label being updated conflicts with already existing one. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + with input validation fails or with codes: + + * *ACTIVE_VALUES_LIMIT_REACHED* when limit of active job property + values is reached. + + * *JSON_PATCH_INVALID* when patch json is invalid. + + * *VALUE_LABEL_IS_BLANK* when provided label is blank + + * *VALUE_LABEL_IS_INVALID* when provided label is not valid, e.g. + contains leading/trailing whitespaces + /configuration/job-properties/{id}/values/{valueId}/translations: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + - $ref: '#/components/parameters/jobPropertyValueId' + patch: + tags: + - configuration + summary: Add a job property value's translations + operationId: Configuration_addJobPropertyValueTranslations + security: + - key: [] + - oauth: + - configuration_manage + description: Submit a job property value's translations to different languages + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/LabelTranslations' + required: true + responses: + '204': + description: Translations accepted + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes + * *JOB_PROPERTY_NOT_FOUND* - when job property not found + * *JOB_PROPERTY_VALUE_NOT_FOUND* when job property's value with given id does not exist. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: >- + There is more than one translation with the same language in the + input + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: 'Invalid input: missing required data, invalid format' + /configuration/job-properties/{id}/archive-values/{valueId}: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + - $ref: '#/components/parameters/jobPropertyValueId' + put: + tags: + - configuration + summary: Archive a job property value + operationId: Configuration_archiveJobPropertyValue + security: + - key: [] + - oauth: + - configuration_manage + description: Archive a job property value + responses: + '204': + description: '' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * *JOB_PROPERTY_NOT_FOUND* when job property does not exist + + * *JOB_PROPERTY_VALUE_NOT_FOUND* when job property value does not + exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + delete: + tags: + - configuration + summary: Unarchive a job property value + operationId: Configuration_unarchiveJobPropertyValue + security: + - key: [] + - oauth: + - configuration_manage + description: Unarchive a job property value + responses: + '204': + description: '' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * *JOB_PROPERTY_NOT_FOUND* when job property does not exist + + * *JOB_PROPERTY_VALUE_NOT_FOUND* when job property value does not + exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + with codes: + + * *VALUE_LABEL_IS_INVALID* when value label contains invalid + characters. In order to unarchive the value, first update the label + with only valid characters. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /configuration/job-properties/{id}/activation: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + put: + tags: + - configuration + summary: Activate a job property + operationId: Configuration_activateJobProperty + security: + - key: [] + - oauth: + - configuration_manage + description: Activates a job property with given id. + responses: + '204': + description: '' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Job property not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: When trying to activate job property that has no active values + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + delete: + tags: + - configuration + summary: Deactivate a job property + operationId: Configuration_deactivateJobProperty + security: + - key: [] + - oauth: + - configuration_manage + description: Deactivates a job property. + responses: + '204': + description: '' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Job property not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /configuration/job-properties/{id}/dependents: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + get: + tags: + - configuration + summary: Get job property's dependents + operationId: Configuration_getJobPropertyDependents + security: + - key: [] + - oauth: + - configuration_read + description: Get list of job property's dependents + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DependentJobProperties' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + * **JOB_PROPERTY_NOT_FOUND** when job property not found, + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + post: + tags: + - configuration + summary: Create job property dependents + operationId: Configuration_createJobPropertyDependents + security: + - key: [] + - oauth: + - configuration_manage + description: Create dependencies between job properties + requestBody: + description: Job properties' id + content: + application/json: + schema: + $ref: '#/components/schemas/DependentJobPropertiesIds' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DependentJobProperties' + '400': + description: > + with codes + + * **JOB_PROPERTIES_CIRCULAR_DEPENDENCY** for job properties circular + dependency + + * **JOB_PROPERTY_ALREADY_DEPENDENT** when job property is already + other job property's dependent + + * **DEPENDENT_JOB_PROPERTY_NOT_FOUND** when dependent job property + not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + * **JOB_PROPERTY_NOT_FOUND** when job property not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: when input validation fails + /configuration/job-properties/{id}/dependents/{dependentId}: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + - $ref: '#/components/parameters/jobPropertyDependentId' + delete: + tags: + - configuration + summary: Remove job property's dependent + operationId: Configuration_removeDependent + security: + - key: [] + - oauth: + - configuration_manage + description: Remove dependency between job properties + responses: + '204': + description: '' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with code + + * **JOB_PROPERTY_NOT_FOUND** when job property not found + + * **JOB_PROPERTY_DEPENDENT_NOT_FOUND** when job property dependent + not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /configuration/job-properties/{id}/dependents/{dependentId}/values: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + - $ref: '#/components/parameters/jobPropertyDependentId' + get: + tags: + - configuration + summary: Get dependent job property's values + operationId: Configuration_getDependentPropertyValues + security: + - key: [] + - oauth: + - configuration_read + description: >- + Get dependent job property's values with corelation to the parent field. + Please use GET + configuration/job-properties/{id}/values/{valueId}/dependents/{dependentId}/values + (with paging) instead. + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DependentJobPropertyValuesRelations' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **JOB_PROPERTY_NOT_FOUND** when job property not found, + + * **JOB_PROPERTY_DEPENDENT_NOT_FOUND** when job property dependent + not found + + * **DEPENDENCY_NOT_FOUND** when dependency between properties not + found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + deprecated: true + /configuration/job-properties/{id}/values/{valueId}/dependents/{dependentId}/values: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + - $ref: '#/components/parameters/jobPropertyValueId' + - $ref: '#/components/parameters/jobPropertyDependentId' + get: + tags: + - configuration + summary: Get job property's dependent values + operationId: Configuration_getDependentValues + security: + - key: [] + - oauth: + - configuration_read + description: >- + Get list of job property's dependent values for specific job property's + value + parameters: + - $ref: '#/components/parameters/language' + - $ref: '#/components/parameters/pageId' + - $ref: '#/components/parameters/pageSize' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DependentJobPropertyValues' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **JOB_PROPERTY_NOT_FOUND** when job property not found, + + * **JOB_PROPERTY_VALUE_NOT_FOUND* when job property value not found + + * **JOB_PROPERTY_DEPENDENT_NOT_FOUND** when job property dependent + not found + + * **DEPENDENCY_NOT_FOUND** when dependency between properties not + found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + post: + tags: + - configuration + summary: Add job property's dependent value + operationId: Configuration_addDependentValue + security: + - key: [] + - oauth: + - configuration_manage + description: Add job property's dependent value for specific job property's value + requestBody: + description: Identifier of job property's dependent value + content: + application/json: + schema: + $ref: '#/components/schemas/Identifiable' + required: true + responses: + '204': + description: '' + '400': + description: > + with code: + + * **JOB_PROPERTY_DEPENDENT_VALUE_NOT_FOUND** when job property + dependent value id not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **JOB_PROPERTY_NOT_FOUND** when job property not found, + + * **JOB_PROPERTY_VALUE_NOT_FOUND* when job property value not found + + * **JOB_PROPERTY_DEPENDENT_NOT_FOUND** when job property dependent + not found + + * **DEPENDENCY_NOT_FOUND** when dependency between properties not + found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: > + with code: + + * **JOB_PROPERTY_DEPENDENT_VALUE_EXISTS** when job property's + dependent value exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: when input validation fails + /configuration/job-properties/{id}/values/{valueId}/dependents/{dependentId}/values/{dependentValueId}: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + - $ref: '#/components/parameters/jobPropertyValueId' + - $ref: '#/components/parameters/jobPropertyDependentId' + - $ref: '#/components/parameters/jobPropertyDependentValueId' + delete: + tags: + - configuration + summary: Remove job property's dependent values relationship + operationId: Configuration_removeDependentValuesRelationship + security: + - key: [] + - oauth: + - configuration_manage + description: Remove relationship between dependent job properties values + responses: + '204': + description: '' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **JOB_PROPERTY_NOT_FOUND** when job property not found, + + * **JOB_PROPERTY_VALUE_NOT_FOUND* when job property value not found + + * **JOB_PROPERTY_DEPENDENT_NOT_FOUND** when job property's dependent + not found + + * **JOB_PROPERTY_DEPENDENT_VALUE_NOT_FOUND** when job property's + dependent value not found + + * **DEPENDENCY_NOT_FOUND** when dependency between properties not + found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /configuration/departments: + post: + tags: + - configuration + summary: Creates department + operationId: Configuration_createDepartment + security: + - key: [] + - oauth: + - configuration_manage + requestBody: + description: department to be created + content: + application/json: + schema: + $ref: '#/components/schemas/Department' + required: true + responses: + '201': + description: Created department + content: + application/json: + schema: + $ref: '#/components/schemas/Department' + '400': + description: >- + With code **DEPARTMENT_LABEL_NOT_UNIQUE** when department with given + label already exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + get: + tags: + - configuration + summary: Get departments + operationId: Configuration_getDepartments + security: + - key: [] + - oauth: + - configuration_read + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: Department list + content: + application/json: + schema: + $ref: '#/components/schemas/Departments' + /configuration/departments/{id}: + get: + tags: + - configuration + summary: Get department + operationId: Configuration_getDepartmentById + security: + - key: [] + - oauth: + - configuration_read + parameters: + - description: Identifier of a department + in: path + name: id + required: true + schema: + type: string + responses: + '200': + description: Department + content: + application/json: + schema: + $ref: '#/components/schemas/Department' + '404': + description: Department not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /configuration/hiring-processes: + get: + tags: + - configuration + summary: Get list of hiring process + operationId: Configuration_getHiringProcesses + security: + - key: [] + - oauth: + - configuration_read + responses: + '200': + description: Hiring processes list + content: + application/json: + schema: + $ref: '#/components/schemas/HiringProcesses' + /configuration/hiring-processes/{id}: + get: + tags: + - configuration + summary: Get hiring process + operationId: Configuration_getHiringProcess + security: + - key: [] + - oauth: + - configuration_read + parameters: + - description: Identifier of a hiring process + in: path + name: id + required: true + schema: + type: string + responses: + '200': + description: Hiring process + content: + application/json: + schema: + $ref: '#/components/schemas/HiringProcess' + '404': + description: Hiring process not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /configuration/offer-properties: + get: + tags: + - configuration + summary: Get a list of available offer properties + operationId: Configuration_listOfferProperties + security: + - key: [] + - oauth: + - configuration_read + description: Get a list of available offer properties. + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/OfferPropertiesDefinition' + '403': + description: | + with code **NO_ACCESS_TO_OFFERS** when not permitted to see offers + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /configuration/candidate-properties: + get: + tags: + - configuration + summary: Get a list of available candidate properties + operationId: Configuration_getCandidateProperties + security: + - key: [] + - oauth: + - configuration_read + description: Get all candidate properties and their configuration for a company + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CandidatePropertyDefinitionList' + '403': + description: Permission denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /configuration/candidate-properties/{id}: + parameters: + - $ref: '#/components/parameters/candidatePropertyId' + get: + tags: + - configuration + summary: Get candidate property by id + operationId: Configuration_getCandidatePropertyById + security: + - key: [] + - oauth: + - configuration_read + description: Get candidate property details and its configuration by id. + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CandidatePropertyDefinition' + '404': + description: Candidate property not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /configuration/candidate-properties/{id}/values: + parameters: + - $ref: '#/components/parameters/candidatePropertyId' + get: + tags: + - configuration + summary: Get Candidate Property values + operationId: Configuration_getCandidatePropertyValues + security: + - key: [] + - oauth: + - configuration_read + description: >- + Lists all available values for given candidate property id. This + endpoint is available only for SINGLE_SELECT candidate property type. + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CandidatePropertyValueList' + '400': + description: >- + With code **CANDIDATE_PROPERTY_NOT_SINGLE_SELECT** when candidate + property type is not SINGLE_SELECT + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Candidate property not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + post: + tags: + - configuration + summary: Create candidate property value + operationId: Configuration_createCandidatePropertyValue + security: + - key: [] + - oauth: + - configuration_manage + description: Create SINGLE_SELECT candidate property value + requestBody: + description: Candidate property value. + content: + application/json: + schema: + $ref: '#/components/schemas/CandidatePropertyValue' + required: true + responses: + '201': + description: Created candidate property value + content: + application/json: + schema: + $ref: '#/components/schemas/CandidatePropertyValue' + '400': + description: > + With codes + + * **CANDIDATE_PROPERTY_NOT_SINGLE_SELECT** when candidate property + type is not SINGLE_SELECT + + * **CANDIDATE_PROPERTY_VALUES_LIMIT_EXCEEDED** when SINGLE_SELECT + candidate property values limit is exceeded + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Candidate property not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: > + with codes + + * **CANDIDATE_PROPERTY_VALUE_ID_ALREADY_EXISTS** when candidate + property with given id already exists, + + * **CANDIDATE_PROPERTY_VALUE_LABEL_ALREADY_EXISTS** when candidate + property with given label already exists. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /configuration/candidate-properties/{id}/values/{valueId}: + parameters: + - $ref: '#/components/parameters/candidatePropertyId' + - $ref: '#/components/parameters/candidatePropertyValueId' + get: + tags: + - configuration + summary: Get Candidate Property value by id + operationId: Configuration_getCandidatePropertyValueById + security: + - key: [] + - oauth: + - configuration_read + description: Get Candidate Property value by its id. + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CandidatePropertyValue' + '400': + description: >- + With code **CANDIDATE_PROPERTY_NOT_SINGLE_SELECT** when candidate + property type is not SINGLE_SELECT + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **CANDIDATE_PROPERTY_NOT_FOUND** when candidate property with + given id does not exist, + + * **CANDIDATE_PROPERTY_VALUE_NOT_FOUND** when candidate property + value with given id does not exist. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + put: + tags: + - configuration + summary: Update candidate property value label + operationId: Configuration_updatePropertyValueLabel + security: + - key: [] + - oauth: + - configuration_manage + description: Update candidate property value label + requestBody: + description: Candidate property value label. + content: + application/json: + schema: + $ref: '#/components/schemas/CandidatePropertyValueLabel' + required: true + responses: + '201': + description: Updated candidate property value + content: + application/json: + schema: + $ref: '#/components/schemas/CandidatePropertyValue' + '400': + description: >- + With codes + + * **CANDIDATE_PROPERTY_NOT_SINGLE_SELECT** when candidate property + type is not SINGLE_SELECT + + * **CANDIDATE_PROPERTY_LIBRARY_READONLY_RESTRICTION** when modifying + read-only value options + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **CANDIDATE_PROPERTY_NOT_FOUND** when candidate property with + given id does not exist, + + * **CANDIDATE_PROPERTY_VALUE_NOT_FOUND** when candidate property + value with given id does not exist. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: > + with code **CANDIDATE_PROPERTY_VALUE_LABEL_ALREADY_EXISTS** when + candidate property with given label already exists. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + delete: + tags: + - configuration + summary: Remove candidate property value + operationId: Configuration_removeValue + security: + - key: [] + - oauth: + - configuration_manage + description: Remove candidate property value label + responses: + '204': + description: '' + '400': + description: > + with codes: + + * **CANDIDATE_PROPERTY_NOT_SINGLE_SELECT** when candidate property + type is not SINGLE_SELECT, + + * **CANDIDATE_PROPERTY_LAST_VALUE** when attempting to remove the + last candidate property value + + * **CANDIDATE_PROPERTY_LIBRARY_READONLY_RESTRICTION** when + attempting to remove library property value + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **CANDIDATE_PROPERTY_NOT_FOUND** when candidate property with + given id does not exist, + + * **CANDIDATE_PROPERTY_VALUE_NOT_FOUND** when candidate property + value with given id does not exist. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /configuration/sources: + get: + tags: + - configuration + summary: List candidate source types with subtypes + operationId: Configuration_listCandidateSourceTypesWithSubtypes + security: + - key: [] + - oauth: + - configuration_read + description: Get a list of all available candidate source type with subtypes + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/SourceTypes' + /configuration/sources/{sourceType}/values: + parameters: + - $ref: '#/components/parameters/sourceType' + get: + tags: + - configuration + summary: List candidate sources + operationId: Configuration_listCandidateSourcesByType + security: + - key: [] + - oauth: + - configuration_read + description: Get a list of all available candidate sources by type. + parameters: + - $ref: '#/components/parameters/sourceSubType' + - description: number of elements to return. max value is 100 + in: query + name: limit + required: false + schema: + type: integer + minimum: 1 + maximum: 100 + default: 100 + - description: number of elements to skip while processing result + in: query + name: offset + required: false + schema: + type: integer + minimum: 0 + default: 0 + responses: + '200': + description: List of candidate sources + content: + application/json: + schema: + $ref: '#/components/schemas/Sources' + '400': + description: > + with codes + + * **SOURCE_TYPE_AND_SUBTYPE_INVALID** when provided pair (type, + subtype) is invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Source not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /configuration/sources/{sourceType}/values/{sourceValueId}: + parameters: + - $ref: '#/components/parameters/sourceType' + - $ref: '#/components/parameters/sourceValueId' + get: + tags: + - configuration + summary: Get a candidate source + operationId: Configuration_getCandidateSource + security: + - key: [] + - oauth: + - configuration_read + description: Get a single candidate sources for a given type. + parameters: + - $ref: '#/components/parameters/sourceSubType' + responses: + '200': + description: Source + content: + application/json: + schema: + $ref: '#/components/schemas/Source' + '400': + description: > + with codes: + + * **SOURCE_TYPE_INVALID** when provided type does not exist, + + * **SUBTYPE_REQUIRED** when there are more sources and subtype + parameter is required, + + * **SOURCE_TYPE_AND_SUBTYPE_INVALID** when provided pair (type, + subtype) is invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Source with given source value id not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /configuration/sources/{sourceIdentifier}: + parameters: + - $ref: '#/components/parameters/sourceIdentifier' + get: + tags: + - configuration + summary: Get a candidate source by identifier. + operationId: Configuration_getCandidateSourceById + security: + - key: [] + - oauth: + - configuration_read + description: >- + Get a single candidate source for a given identifier (included deleted + source). + responses: + '200': + description: Source + content: + application/json: + schema: + $ref: '#/components/schemas/SourceDefinition' + '400': + description: |- + Invalid source identifier. With codes + * *INVALID_IDENTIFIER* - when identifier has invalid format. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: |- + Source with given identifier not found. With codes + * *SOURCE_NOT_FOUND* - when source is not found. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /configuration/rejection-reasons: + get: + tags: + - configuration + summary: Get rejection reasons + operationId: Configuration_getRejectionReasons + security: + - key: [] + - oauth: + - configuration_read + description: Get rejection reasons + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Properties' + /configuration/withdrawal-reasons: + get: + tags: + - configuration + summary: Get withdrawal reasons + operationId: Configuration_getWithdrawalReasons + security: + - key: [] + - oauth: + - configuration_read + description: Get withdrawal reasons + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Properties' + '403': + description: Permission denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /publications/{postingId}: + get: + tags: + - feed + summary: Get posting by id + operationId: Feed_getPostingById + security: + - key: [] + description: >- + This endpoint allows getting a single job posting information.
You + must pass authentication token through X-SmartToken HTTP header. + parameters: + - description: Posting id to find + name: postingId + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: Posting successfully returned + content: + application/json: + schema: + $ref: '#/components/schemas/FeedJobAd' + '401': + description: Unauthorized + '404': + description: Not found + put: + tags: + - feed + summary: Update posting information + operationId: Feed_updatePostingInfo + security: + - key: [] + description: >- +

This endpoint allows updating a single job posting status and + URL during a job posting lifecycle.
You must pass + authentication token through X-SmartToken HTTP + header.

Complete list of body parameters below:

Status - + This is the posting status on your job board. It should be updated with + one of the following values:
  • Active - set this status just + after you successfully publish a job to your job board; please provide a + direct URL to the published job in your job board using LiveUrl + so that we can surface it to SmartRecruiters + users
  • UnderPosting - set this status once you begin the + process of posting a job in your job board if your board does not + support immediate posting. When posting is complete, update the status + to Active
  • Inactive - set this status once the job + is no longer published to your job board
  • Error - set this + status when an error prevents the job from being published to your job + board; please provide error details using the Comment + field
LiveUrl - This is direct URL to the job you have + published in your job board; will be surfaced to SmartRecruiters + users
Comment - This is field in which you pass error details + when one occurs while publishing a job; error details will be available + to our Support Team

+ parameters: + - description: >- + A single posting id. Allows updating information only for the + defined postings. + name: postingId + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/PostingUpdateRequest' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/PostingUpdateRequest' + required: true + responses: + '204': + description: Posting successfully updated + '400': + description: Payload not valid + '401': + description: Wrong token + '404': + description: PostingId not found + /publications: + get: + tags: + - feed + summary: Get a list of postings + operationId: Feed_listPostings + security: + - key: [] + description: >- +

Get job postings published to your job board.
You must pass + authentication token through X-SmartToken HTTP header.

By + default, this endpoint will return only postings created in the last 30 + days with the status Pending. Use additional parameters to + control which postings are returned.

+ parameters: + - description: >- + List postings created after the specified date.

Date + should be in ISO 8601 format: (e.g.: + '2015-07-27T08:43:33.000Z').

If no value is provided, only + postings created in the last 30 days will be returned. + name: updatedAfter + in: query + schema: + type: string + - description: >- + List of posting statuses separated by comma.

Status + definition:
  • Pending - this is a new posting that + is pending publication on your job board. You should always retrieve + these postings, publish them, and then update the status via the + PUT method.
  • UnderPosting - this is a status + that is only set by you. It indicates that a posting is currently + being published but is not yet available on the job board. + SmartRecruiters will never set this status + ourselves.
  • Active - this is a status that is only set + by you. It indicates that the posting has been successfully + published and is available on the job board. SmartRecruiters will + never set this status ourselves.
  • toUnpost - this + posting has either expired or has manually been requested for + removal by the client. As a job board, you should unpost these + postings immediately, and then update the status to Inactive + via the PUT method.
  • Inactive - this is a + status that is only set by you. It indicates that the posting has + been successfully unpublished and is no longer available on the job + board. SmartRecruiters will never set this status + ourselves.
  • Error - this is a status only set by you. + It indicates that the posting could not be published. + SmartRecruiters will never set this status + ourselves.

Example: status=Active,Error + name: status + in: query + schema: + type: array + items: + type: string + enum: + - Pending + - UnderPosting + - Active + - toUnpost + - Inactive + - Error + default: Pending + - description: >- + Number of elements to skip while processing result.
Allowed + range: [0, 2^31-1]. + name: offset + in: query + schema: + minimum: 0 + type: string + default: '0' + - description: 'Maximum number of postings returned.
Allowed range: [0, 100].' + name: limit + in: query + schema: + maximum: 100 + minimum: 0 + type: string + default: '100' + responses: + '200': + description: Postings successfully returned + content: + application/json: + schema: + $ref: '#/components/schemas/FeedPublication' + '401': + description: Unauthorized + '404': + description: Not found + /interview-types: + get: + tags: + - interview types + summary: Retrieves interview types + operationId: InterviewTypes_getTypes + security: + - key: [] + - oauth: + - interview_types_read + responses: + '200': + description: Retrieves interview types + content: + application/json: + schema: + $ref: '#/components/schemas/InterviewTypes' + '500': + $ref: '#/components/responses/ServerError' + patch: + tags: + - interview types + summary: Adds interview types to already existing ones + operationId: InterviewTypes_addExistingTypes + security: + - key: [] + - oauth: + - interview_types_write + requestBody: + description: Interview types to be added + content: + application/json: + schema: + $ref: '#/components/schemas/InterviewTypes' + required: true + responses: + '204': + description: Interview types updated + '403': + description: Forbidden to create an interview type + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: > + with codes: + + * **INTERVIEW_TYPES_SIZE_EXCEEDED** when maximum size of 2000 + interview types exceeded + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: When input validation fails + '500': + $ref: '#/components/responses/ServerError' + /interview-types/{interviewType}: + parameters: + - $ref: '#/components/parameters/InterviewType' + delete: + tags: + - interview types + summary: Removes interview type with given name + operationId: InterviewTypes_removeByType + security: + - key: [] + - oauth: + - interview_types_write + responses: + '204': + description: Interview type deleted + '403': + description: Forbidden to delete an interview type + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **INTERVIEW_TYPE_NOT_FOUND** When no interview type with given + name + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + /interviews: + get: + tags: + - interviews + summary: Retrieves a list of interviews + operationId: Interviews_getList + security: + - key: [] + - oauth: + - interviews_read + description: List of interviews + parameters: + - $ref: '#/components/parameters/ApplicationId' + responses: + '200': + description: List of interviews + content: + application/json: + schema: + $ref: '#/components/schemas/InterviewsList' + '403': + description: Forbidden to access interviews list + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **APPLICATION_NOT_FOUND** when no application found with given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + post: + tags: + - interviews + summary: Creates an interview + operationId: Interviews_createNewInterview + security: + - key: [] + - oauth: + - interviews_write + requestBody: + description: Interview to be added + content: + application/json: + schema: + $ref: '#/components/schemas/Interview' + required: true + responses: + '201': + description: Created interview + content: + application/json: + schema: + $ref: '#/components/schemas/Interview' + '400': + description: | + with codes: + * **INVALID_TIMEZONE** when invalid timezone + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden to create an interview + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + When input validation fails or with codes: + + * **INACTIVE_OR_DELETED_ORGANIZER** when inactive or deleted + organizer + + * **INACTIVE_OR_DELETED_INTERVIEWERS** when at least one of the + interviewers is inactive or deleted + + * **END_DATE_BEFORE_START_DATE** when end date of the timeslot is + before start date + + * **NON_EXISTING_ORGANIZER** when organizer does not exist + + * **NON_EXISTING_INTERVIEWERS** when at least one of the + interviewers does not exist + + * **CANDIDATE_NOT_FOUND** when candidate with given id not found + + * **JOB_NOT_FOUND** when job with given id not found + + * **APPLICATION_NOT_FOUND** when application for given candidate id + and job id not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + /interviews/{interviewId}: + parameters: + - $ref: '#/components/parameters/InterviewId' + get: + tags: + - interviews + summary: Retrieves an interview + operationId: Interviews_getDetails + security: + - key: [] + - oauth: + - interviews_read + description: Interview details + responses: + '200': + description: Interview + content: + application/json: + schema: + $ref: '#/components/schemas/Interview' + '403': + description: Forbidden to access an interview + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **INTERVIEW_NOT_FOUND** when no interview with given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + patch: + tags: + - interviews + summary: Modifies an interview + operationId: Interviews_modifyInterview + security: + - key: [] + - oauth: + - interviews_write + requestBody: + description: Interview to be updated + content: + application/json: + schema: + $ref: '#/components/schemas/InterviewToUpdateInput' + required: true + responses: + '204': + description: Interview updated + '400': + description: | + with codes: + * **INVALID_TIMEZONE** when invalid timezone + '403': + description: Forbidden to update an interview + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **INTERVIEW_NOT_FOUND** when no interview with given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: When input validation fails + '500': + $ref: '#/components/responses/ServerError' + delete: + tags: + - interviews + summary: Deletes an interview + operationId: Interviews_deleteById + security: + - key: [] + - oauth: + - interviews_write + responses: + '204': + description: Interview was deleted + '403': + description: Forbidden to delete an interview + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **INTERVIEW_NOT_FOUND** when no interview with given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + /interviews/{interviewId}/timeslots: + post: + tags: + - timeslots + summary: Creates a timeslot + operationId: Timeslots_createNewTimeslot + security: + - key: [] + - oauth: + - interviews_write + parameters: + - $ref: '#/components/parameters/InterviewId' + requestBody: + description: Timeslot to be added + content: + application/json: + schema: + $ref: '#/components/schemas/Timeslot' + required: true + responses: + '201': + description: Created timeslot with id + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/Timeslot' + '403': + description: Forbidden to create a timeslot + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **INTERVIEW_NOT_FOUND** when no interview with given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: > + with codes: + + * **CANNOT_ADD_MORE_TIMESLOTS** when interview already contains + maximum number of timeslots + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + When input validation fails or with codes: + + * **INACTIVE_OR_DELETED_INTERVIEWERS** when at least one of the + interviewers is inactive or deleted + + * **END_DATE_BEFORE_START_DATE** when end date of the timeslot is + before start date + + * **NON_EXISTING_INTERVIEWERS** when at least one of the + interviewers does not exist + '500': + $ref: '#/components/responses/ServerError' + /interviews/{interviewId}/timeslots/{timeslotId}: + parameters: + - $ref: '#/components/parameters/InterviewId' + - $ref: '#/components/parameters/TimeslotId' + get: + tags: + - timeslots + summary: Retrieves a timeslot + operationId: Timeslots_getById + security: + - key: [] + - oauth: + - interviews_read + responses: + '200': + description: Timeslot + content: + application/json: + schema: + $ref: '#/components/schemas/Timeslot' + '403': + description: Forbidden to access a timeslot + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **INTERVIEW_NOT_FOUND** when no interview with given id + * **TIMESLOT_NOT_FOUND** when no timeslot with given id + '500': + $ref: '#/components/responses/ServerError' + patch: + tags: + - timeslots + summary: Modifies a timeslot + operationId: Timeslots_modifyTimeSlot + security: + - key: [] + - oauth: + - interviews_write + requestBody: + description: Timeslot to be updated + content: + application/json: + schema: + $ref: '#/components/schemas/Timeslot' + required: true + responses: + '204': + description: Timeslot updated + '400': + description: Missing data in timeslot object + '403': + description: Forbidden to update a timeslot + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **INTERVIEW_NOT_FOUND** when no interview with given id + * **TIMESLOT_NOT_FOUND** when no timeslot with given id + '422': + description: > + When input validation fails or with codes: + + * **INACTIVE_OR_DELETED_INTERVIEWERS** when at least one of the + interviewers is inactive or deleted + + * **END_DATE_BEFORE_START_DATE** when end date of the timeslot is + before start date + + * **NON_EXISTING_INTERVIEWERS** when at least one of the + interviewers does not exist + '500': + $ref: '#/components/responses/ServerError' + delete: + tags: + - timeslots + summary: Deletes a timeslot + operationId: Timeslots_deleteTimeslot + security: + - key: [] + - oauth: + - interviews_write + responses: + '204': + description: Timeslot deleted + '403': + description: Forbidden to delete a timeslot + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **INTERVIEW_NOT_FOUND** when no interview with given id + * **TIMESLOT_NOT_FOUND** when no timeslot with given id + '409': + description: | + with codes: + * **CANNOT_DELETE_LAST_TIMESLOT** when cannot delete last timeslot + '500': + $ref: '#/components/responses/ServerError' + /interviews/{interviewId}/candidate/status: + parameters: + - $ref: '#/components/parameters/InterviewId' + put: + tags: + - statuses + summary: Changes a candidate's status. + operationId: Statuses_updateCandidateStatus + security: + - key: [] + - oauth: + - interviews_write + requestBody: + description: New candidate's status + content: + application/json: + schema: + $ref: '#/components/schemas/AttendeeStatus' + required: true + responses: + '204': + description: Status successfully changed + '403': + description: Forbidden to change candidate's status + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **INTERVIEW_NOT_FOUND** when no interview with given id + '422': + description: When input validation fails + '500': + $ref: '#/components/responses/ServerError' + deprecated: true + /interviews/{interviewId}/timeslots/{timeslotId}/interviewers/{userId}/status: + parameters: + - $ref: '#/components/parameters/InterviewId' + - $ref: '#/components/parameters/TimeslotId' + - $ref: '#/components/parameters/UserId' + put: + tags: + - statuses + summary: Changes a interviewer's status in given timeslot + operationId: Statuses_updateInterviewerStatusInSlot + security: + - key: [] + - oauth: + - interviews_write + requestBody: + description: New interviewer's status + content: + application/json: + schema: + $ref: '#/components/schemas/AttendeeStatus' + required: true + responses: + '204': + description: Status successfully changed + '403': + description: Forbidden to change interviewer's status + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **INTERVIEW_NOT_FOUND** when no interview with given id * + **TIMESLOT_NOT_FOUND** when no timeslot with given id * + **NON_EXISTING_INTERVIEWERS** when no interviewer with given id + exists in timeslot + '422': + description: When input validation fails + '500': + $ref: '#/components/responses/ServerError' + /interviews/{interviewId}/timeslots/{timeslotId}/candidateStatus: + parameters: + - $ref: '#/components/parameters/InterviewId' + - $ref: '#/components/parameters/TimeslotId' + put: + tags: + - statuses + summary: Changes a candidate's status in given timeslot + operationId: Statuses_updateCandidateTimeslotStatus + security: + - key: [] + - oauth: + - interviews_write + requestBody: + description: New candidate's status + content: + application/json: + schema: + $ref: '#/components/schemas/AttendeeStatus' + required: true + responses: + '204': + description: Candidate status in a timeslot is successfully changed + '403': + description: Forbidden to change candidates's status in a timeslot + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **INTERVIEW_NOT_FOUND** when no interview with given id * + **TIMESLOT_NOT_FOUND** when no timeslot with given id + '422': + description: When input validation fails + '500': + $ref: '#/components/responses/ServerError' + /jobs/{jobId}/positions: + parameters: + - $ref: '#/components/parameters/jobId' + get: + tags: + - jobs + summary: Positions for a job + operationId: Jobs_getPositionsForJob + security: + - key: [] + - oauth: + - jobs_read + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: Job's positions + content: + application/json: + schema: + $ref: '#/components/schemas/JobPositions' + '403': + description: Job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + post: + tags: + - jobs + summary: Create a new position for a job + operationId: Jobs_createNewPosition + security: + - key: [] + - oauth: + - jobs_manage + requestBody: + $ref: '#/components/requestBodies/JobPositionInput' + responses: + '201': + description: Created position + content: + application/json: + schema: + $ref: '#/components/schemas/JobPosition' + '403': + description: | + with codes + * **APPROVAL_PROCESS_ENABLED** when approval process is enabled + * **PERMISSION_DENIED** when job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /jobs/{jobId}/positions/{positionId}: + parameters: + - $ref: '#/components/parameters/jobId' + - $ref: '#/components/parameters/positionId' + get: + tags: + - jobs + summary: Get a single position + operationId: Jobs_getSinglePosition + security: + - key: [] + - oauth: + - jobs_read + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: Found position + content: + application/json: + schema: + $ref: '#/components/schemas/JobPosition' + '403': + description: Job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Position not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + put: + tags: + - jobs + summary: Update position + operationId: Jobs_updatePosition + security: + - key: [] + - oauth: + - jobs_manage + requestBody: + $ref: '#/components/requestBodies/JobPositionInput' + responses: + '201': + description: Updated position + content: + application/json: + schema: + $ref: '#/components/schemas/JobPosition' + '403': + description: | + with codes + * **APPROVAL_PROCESS_ENABLED** when approval process is enabled + * **PERMISSION_DENIED** when job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Position not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + delete: + tags: + - jobs + summary: Delete position + operationId: Jobs_deletePosition + security: + - key: [] + - oauth: + - jobs_manage + responses: + '204': + description: Position successfully removed + '400': + description: >- + with code **POSITION_ASSIGNED** when position has candidate already + assigned and cannot be removed + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: | + with codes + * **APPROVAL_PROCESS_ENABLED** when approval process is enabled + * **PERMISSION_DENIED** when job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Position not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /jobs/{jobId}/jobads: + parameters: + - $ref: '#/components/parameters/jobId' + get: + tags: + - jobs + summary: Find and list job ads for a given job + operationId: Jobs_findJobAdsForJob + security: + - key: [] + - oauth: + - jobs_read + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: Job's job ads + content: + application/json: + schema: + $ref: '#/components/schemas/JobAds' + '404': + description: Job not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + post: + tags: + - jobs + summary: Create a new job ad + operationId: Jobs_createJobAd + security: + - key: [] + - oauth: + - jobs_manage + requestBody: + $ref: '#/components/requestBodies/JobAdContent' + responses: + '200': + description: Created job ad. + content: + application/json: + schema: + $ref: '#/components/schemas/JobAdItem' + '400': + description: > + with codes + + * **JOB_AD_LIMIT_REACHED** when job add limit (100 per job) is + reached + + * **PROPERTY_INVALID** when one of job ad attribute contains invalid + characters + '404': + description: Job not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /jobs/{jobId}/jobads/{jobAdId}: + parameters: + - $ref: '#/components/parameters/jobId' + - $ref: '#/components/parameters/jobAdId' + get: + tags: + - jobs + summary: Get a job ad + operationId: Jobs_getJobAd + security: + - key: [] + - oauth: + - jobs_read + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: Job ad + content: + application/json: + schema: + $ref: '#/components/schemas/JobAdItem' + '404': + description: Job or job ad not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + put: + tags: + - jobs + summary: Update a job ad + operationId: Jobs_updateJobAd + security: + - key: [] + - oauth: + - jobs_manage + description: > + Enables you to update an existing job ad. + + NOTE: In order for a job ad changes to be reflected on internal sources + (Career Sites, Job Widgets etc.) and Job Aggregators, you need to + Publish the job ad after making an update. + requestBody: + $ref: '#/components/requestBodies/JobAdContent' + responses: + '200': + description: Updated job ad + content: + application/json: + schema: + $ref: '#/components/schemas/JobAdItem' + '400': + description: > + with code + + * **PROPERTY_INVALID** when one of job ad attribute contains invalid + characters + '404': + description: Job or job ad not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /jobs/{jobId}/jobads/{jobAdId}/postings: + parameters: + - $ref: '#/components/parameters/jobId' + - $ref: '#/components/parameters/jobAdId' + post: + tags: + - jobs + summary: Publishes a job ad + operationId: Jobs_publishJobAdPostings + security: + - key: [] + - oauth: + - jobs_manage + description: > + Publishes a job ad to internal sources (Career Pages, Job Widget, + Facebook App, WordPress Plugin, Posting API) and optionally to all free + job aggregators. + + + By default it's set to publish to job aggregators + + + It reflects a Publish action available in the SmartRecruiters UI. + + + Note: Internal sources depend on a company's payment plan. + requestBody: + $ref: '#/components/requestBodies/Publication' + responses: + '202': + description: Posting scheduled + content: + application/json: + schema: + $ref: '#/components/schemas/JobAdPublicationScheduled' + '400': + description: > + with code + + * **PUBLISHED_JOB_AD_LIMIT_REACHED** when company's limit for + published job ads has been reached + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: | + with code + * **ACCESS_FORBIDDEN** when user is not authorize to publish a job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with code + + * **JOB_NOT_POSTED** when default job ad for the job has not been + published + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + * **JOBAD_NOT_FOUND** when job ad has not been found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + get: + tags: + - jobs + summary: List publications for a job ad + operationId: Jobs_listPublicationsForJobAd + security: + - key: [] + - oauth: + - jobs_read + description: List publications for a job ad + parameters: + - $ref: '#/components/parameters/language' + - description: >- + publication status filter; when omitted, defaults to 'true' (only + active publications are returned); 'false' returns active and + inactive publications + in: query + name: activeOnly + required: false + schema: + type: boolean + default: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/PublicationList' + '403': + description: > + with code + + * **ACCESS_FORBIDDEN** when user is not authorized to access job ad + postings + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + * **JOBAD_NOT_FOUND** when job ad has not been found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + delete: + tags: + - jobs + summary: Unpublish a job ad + operationId: Jobs_unpublishJobAd + security: + - key: [] + - oauth: + - jobs_manage + description: > + Unpublishes a job ad from all sources. + + + **Unpublishing a default job ad will unpublish all other job ads within + that job.** + responses: + '202': + description: Unpost scheduled + content: + application/json: + schema: + $ref: '#/components/schemas/JobAdUnpublishScheduled' + '401': + description: > + with code + + * **ACCESS_FORBIDDEN** when user is not authorized to unpublish job + ad + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + * **JOBAD_NOT_FOUND** when job ad has not been found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /jobs/{jobId}/publication: + parameters: + - $ref: '#/components/parameters/jobId' + post: + tags: + - jobs + summary: Publishes a default job ad + operationId: Jobs_publishDefaultJobAd + security: + - key: [] + - oauth: + - jobs_publications_manage + description: > + Publishes default job ad to internal sources and to free job + aggregators. + + + It reflects a Publish action available in the SmartRecruiters UI. + + + Note: + Internal sources: Career Pages, Job Widget, Facebook App, WordPress Plugin, Posting API depend on a company's payment plan. + requestBody: + $ref: '#/components/requestBodies/Publication' + responses: + '204': + description: '' + '400': + description: > + with code + + * **PUBLISHED_JOB_AD_LIMIT_REACHED** when company's limit for + published job ads has been reached + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: > + with code + + * **UNAUTHORIZED_TO_ACCESS_JOB** - when user is not authorized to + access the job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with code + + * **NOT_AUTHORIZED_TO_PUBLISH_JOB** - when user is not authorized to + publish the job or approval process for the job is required + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + delete: + tags: + - jobs + summary: Unpublishes a job from all sources + operationId: Jobs_unpublishJobFromAllSources + security: + - key: [] + - oauth: + - jobs_publications_manage + description: Unpublishes a job from all sources + responses: + '204': + description: '' + '401': + description: > + with code + + * **UNAUTHORIZED_TO_ACCESS_JOB** - when user is not authorized to + access the job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + get: + tags: + - jobs + summary: Find and list publications for a job + operationId: Jobs_findPublications + security: + - key: [] + - oauth: + - jobs_read + description: Find and list publications for a job + parameters: + - $ref: '#/components/parameters/language' + - description: >- + publication status filter; defaults to 'true' (only active + publications are returned); 'false' returns active and inactive + publications + in: query + name: activeOnly + required: false + schema: + type: boolean + default: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/PublicationList' + '401': + description: > + with code + + * **UNAUTHORIZED_TO_ACCESS_JOB** - when user is not authorized to + access the job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /jobs/{jobId}/hiring-team: + parameters: + - $ref: '#/components/parameters/jobId' + get: + tags: + - jobs + summary: Get hiring team of a job with a given id. + operationId: Jobs_getHiringTeam + security: + - key: [] + - oauth: + - jobs_read + description: Get hiring team of a job with a given id. + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: Hiring team members + content: + application/json: + schema: + $ref: '#/components/schemas/HiringTeamMembers' + '401': + description: Job access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + post: + tags: + - jobs + summary: Add hiring team member of a job with a given id. + operationId: Jobs_addHiringTeamMember + security: + - key: [] + - oauth: + - jobs_manage + description: Add hiring team member of a job with a given id + requestBody: + description: HiringTeamMember object + content: + application/json: + schema: + $ref: '#/components/schemas/HiringTeamMember' + responses: + '200': + description: Added hiring team member + content: + application/json: + schema: + $ref: '#/components/schemas/HiringTeamMemberResponse' + '400': + description: | + with code + * **USER_NOT_FOUND** when user with given id does not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Job access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: User is already a member of the hiring team + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /jobs/{jobId}/hiring-team/{userId}: + parameters: + - $ref: '#/components/parameters/jobId' + - description: user identifier + in: path + name: userId + required: true + schema: + type: string + delete: + tags: + - jobs + summary: Removes hiring team member of a job with a given id. + operationId: Jobs_removeHiringTeamMember + security: + - key: [] + - oauth: + - jobs_manage + description: Removes hiring team member of a job with a given id. + responses: + '204': + description: '' + '400': + description: | + with code + * **INVALID_HIRING_TEAM_STATE** when removing the last hiring + team member. Each hiring team should have at least one member. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Job access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: User is not a member of the hiring team + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /jobs/{jobId}/note: + parameters: + - $ref: '#/components/parameters/jobId' + get: + tags: + - jobs + summary: Get note of a job. + operationId: Jobs_getNoteById + security: + - key: [] + - oauth: + - jobs_read + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: Job note. + content: + application/json: + schema: + $ref: '#/components/schemas/JobNote' + '401': + description: Job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Job note not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + put: + tags: + - jobs + summary: Update note of a job. + operationId: Jobs_updateNote + security: + - key: [] + - oauth: + - jobs_manage + description: Update note of a job. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/JobNote' + required: true + responses: + '200': + description: Updated note. + content: + application/json: + schema: + $ref: '#/components/schemas/JobNote' + '401': + description: Job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /jobs/{jobId}/headcount: + parameters: + - $ref: '#/components/parameters/jobId' + patch: + tags: + - jobs + summary: Update job headcount. + operationId: Jobs_updateHeadcount + security: + - key: [] + - oauth: + - jobs_manage + description: Update job headcount. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/HeadcountPatchRequest' + required: true + responses: + '202': + description: Accepted headcount update request + content: + application/json: + schema: + $ref: '#/components/schemas/HeadcountUpdateAccepted' + '400': + description: > + with codes + + * **CANNOT_START_APPROVAL_PROCESS** when approval process cannot be + started + + * **INVALID_SALARY_RANGE** when salary range is not valid + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: | + with codes + * **PERMISSION_DENIED** when job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with codes + + * **APPROVAL_PROCESS_NOT_ENABLED** when approval process is not + enabled + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /jobs: + get: + tags: + - jobs + summary: Search jobs + operationId: Jobs_searchJobsByParams + security: + - key: [] + - oauth: + - jobs_read + description: Search jobs by params. + parameters: + - $ref: '#/components/parameters/language' + - description: >- + full-text search query based on a job title; case insensitive; e.g. + java developer + in: query + name: q + required: false + schema: + type: string + - description: number of elements to return. max value is 100 + in: query + name: limit + required: false + schema: + type: integer + minimum: 1 + maximum: 100 + default: 10 + - description: >- + number of elements to skip while processing result; this method of + paging is very slow and is deprecated, please use `pageId` instead + in: query + name: offset + required: false + deprecated: true + schema: + type: integer + minimum: 0 + default: 0 + maximum: 10000000 + - description: >- + unique identifier for next page of jobs - returned as `nextPageId` + in previous page result. You must set `job_id` value for `sort` + parameter if you use `pageId`. + in: query + name: pageId + required: false + schema: + type: string + - description: >- + Order in which results are returned. + + - default - sorts results by creation date or by match score and + creation date if query (q) is set. Can't be used with pageId + parameter (request might not return all results) + + - job_id - sorts results by job id. The only supported sorting order + when using pageId based pagination. + in: query + name: sort + required: false + schema: + type: string + enum: + - default + - job_id + - description: >- + city filter (part of the location object); can be used repeatedly; + case sensitive; e.g. San Francisco + in: query + name: city + required: false + explode: true + schema: + type: array + items: + type: string + - description: >- + department filter (by department label); can be used repeatedly; + case sensitive; e.g. “Marketing” + in: query + name: department + required: false + explode: true + schema: + type: array + items: + type: string + - description: >- + ISO8601-formatted time boundaries for the job update time, Format: + yyyy-MM-ddTHH:mm:ss.SSSZZ + in: query + name: updatedAfter + required: false + schema: + type: string + format: date-time + - description: > + ISO8601-formatted time boundaries for the job lastActivityOn time, + Format: yyyy-MM-ddTHH:mm:ss.SSSZZ. + + lastActivityOn is updated when job is edited, new candidates apply + or job is published. + in: query + name: lastActivityAfter + required: false + schema: + type: string + format: date-time + - description: | + Exceptions to the language code ISO format: + * "en-GB" - "English - English (UK)" + * "es-MX" - "Spanish - español (México)" + * "fr-CA" - "French - français (Canada)" + * "pt-BR" - "Portugal - português (Brasil)" + * "zh-TW" - "Chinese (Traditional) - 中文 (香港)" + * "zh-CN" - "Chinese (Simplified) - 中文 (简体)" + + + Value "pt-PT" is deprecated and will not work, use "pt" instead. + in: query + name: language + required: false + schema: + type: string + enum: + - af + - am + - ar + - az + - bg + - bn + - ca + - cs + - cy + - da + - de + - el + - en + - en-GB + - es + - es-MX + - et + - eu + - fa + - fi + - fil + - fr + - fr-CA + - ga + - gl + - gu + - he + - hi + - hr + - hu + - hy + - id + - is + - it + - ja + - ka + - km + - kn + - ko + - lo + - lt + - lv + - ml + - mn + - mr + - ms + - ne + - nl + - 'no' + - pl + - pt + - pt-BR + - ro + - ru + - si + - sk + - sl + - sr + - sv + - sw + - ta + - te + - tr + - uk + - ur + - vi + - zh-CN + - zh-TW + - zu + - description: | + Status of a job + in: query + name: status + required: false + schema: + type: string + enum: + - CREATED + - SOURCING + - FILLED + - INTERVIEW + - OFFER + - CANCELLED + - ON_HOLD + - description: | + Posting status of a job + in: query + name: postingStatus + required: false + schema: + type: string + enum: + - PUBLIC + - INTERNAL + - NOT_PUBLISHED + - PRIVATE + responses: + '200': + description: >- + Jobs matching search criteria. | Note that location returned by this + endpoint will **not** provide latitude and longitude. + content: + application/json: + schema: + $ref: '#/components/schemas/Jobs' + headers: + Link: + description: > + Links to related resources, in the format defined by + + [RFC 5988](https://tools.ietf.org/html/rfc5988#section-5). + + This will include a link with relation type `next` to the + + next page (containing `pageId` query parameter), if there is a + next page. + schema: + type: string + '400': + description: | + with codes + * **INVALID_PAGE_ID** - provided page id is invalid + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + post: + tags: + - jobs + summary: Create a new job + operationId: Jobs_createNewJob + security: + - key: [] + - oauth: + - jobs_manage + description: >- + Create a new job. Ignores all nonexistent job properties and job + properties values. + requestBody: + description: Job object that needs to be created + content: + application/json: + schema: + $ref: '#/components/schemas/JobInput' + responses: + '201': + description: Created job + content: + application/json: + schema: + $ref: '#/components/schemas/JobDetails' + '400': + description: > + with codes + + * **DEPARTMENT_NOT_FOUND** when provided department does not exist, + + * **INDUSTRY_NOT_FOUND** when provided industry does not exist, + + * **FUNCTION_NOT_FOUND** when provided function does not exist, + + * **TYPE_OF_EMPLOYMENT_NOT_FOUND** when provided type of employment + does not exist, + + * **JOB_AD_LANGUAGE_NOT_FOUND** when provided job ad language does + not exist, + + * **EEO_CATEGORY_NOT_FOUND** when provided eeo category does not + exist, + + * **EXPERIENCE_LEVEL_NOT_FOUND** when provided experience level does + not exist, + + * **CITY_NOT_FOUND** when provided city does not exist, + + * **INVALID_GEO_DATA** when latitude or longitude parameters are + invalid + + * **JOB_PROPERTY_REQUIRED** when some job property is required to + create job, + + * **JOB_PROPERTY_PARENT_VALUE_MISSING** when job property is set but + value for its parent is missing, + + * **INVALID_JOB_PROPERTY_VALUE_ID** when provided job property value + id does not exist for required property, + + * **INVALID_JOB_PROPERTY_VALUE_TYPE** when invalid value type is + used for job property, + + * **JOB_PROPERTY_VALUE_NOT_AVAILABLE_FOR_SELECTED_PARENT_VALUE** + when job property's value is not available for selected parent + value, + + * **VALUE_INACTIVE** when job property's value is not active and + cannot be set. + + * **INVALID_TEXT_FORMAT** when job property's value contains invalid + text + + * **INVALID_BRAND_VALUE** when provided brand value is invalid + + * **TYPE_OF_EMPLOYMENT_NOT_ALLOWED** when provided type of + employment is not allowed in country + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: | + with codes + * **JOB_TEMPLATES_MANAGEMENT_FORBIDDEN** when not allowed to create + job templates. + * **PERMISSION_DENIED** when job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: > + with code + + * **REF_NUMBER_ALREADY_EXISTS** when provided ref number already + exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Input validation fails + /jobs/{jobId}: + parameters: + - $ref: '#/components/parameters/jobId' + get: + tags: + - jobs + summary: Get content of a job with a given id. + operationId: Jobs_getContentById + security: + - key: [] + - oauth: + - jobs_read + description: Get content of a job with a given id. + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: Job + content: + application/json: + schema: + $ref: '#/components/schemas/JobDetails' + '401': + description: Job access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + patch: + tags: + - jobs + summary: Update a job + operationId: Jobs_updateJobAttributes + security: + - key: [] + - oauth: + - jobs_manage + description: >- + Update a job. All attributes that are used when creating a job can be + used. Ignores all nonexistent job properties and job properties values. + requestBody: + $ref: '#/components/requestBodies/JSONPatch' + responses: + '200': + description: Updated job + content: + application/json: + schema: + $ref: '#/components/schemas/JobDetails' + '400': + description: > + with codes + + * **DEPARTMENT_NOT_FOUND** when provided department does not exist, + + * **INDUSTRY_NOT_FOUND** when provided industry does not exist, + + * **FUNCTION_NOT_FOUND** when provided function does not exist, + + * **TYPE_OF_EMPLOYMENT_NOT_FOUND** when provided type of employment + does not exist, + + * **JOB_AD_LANGUAGE_NOT_FOUND** when provided job ad language does + not exist, + + * **EEO_CATEGORY_NOT_FOUND** when provided eeo category does not + exist, + + * **JOB_PROPERTY_REQUIRED** when some job property is required, + + * **INVALID_JOB_PROPERTY_VALUE_ID** when provided job property value + id does not exist for required property, + + * **INVALID_JOB_PROPERTY_VALUE_TYPE** when invalid value type is + used for job property, + + * **VALUE_INACTIVE** when job property's value is not active and + cannot be set. + + * **INVALID_TEXT_FORMAT** when job property's value contains invalid + text + + * **INVALID_BRAND_VALUE** when provided brand value is invalid + + * **TYPE_OF_EMPLOYMENT_NOT_ALLOWED** when provided type of + employment is not allowed in country + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Job access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with code + + * **JOB_TEMPLATES_MANAGEMENT_FORBIDDEN** when not allowed to change + job to a job template. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Input validation fails + put: + tags: + - jobs + summary: Updates job + operationId: Jobs_updateJobAndJobAd + security: + - key: [] + - oauth: + - jobs_manage + description: >- + Enables you to update job and it's jobAd. This operation requires + passing a job id within path and job's new state within body of the PUT + request. Ignores all nonexistent job properties and job properties + values. However jobAd and all it's properties need to be provided. All + jobAd's properties will be removed if not provided. Returns an updated + job with jobAd. + requestBody: + description: Job that needs to be updated + content: + application/json: + schema: + $ref: '#/components/schemas/JobInput' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JobDetails' + '400': + description: > + with codes + + * **DEPARTMENT_NOT_FOUND** when provided department does not exist, + + * **INDUSTRY_NOT_FOUND** when provided industry does not exist, + + * **FUNCTION_NOT_FOUND** when provided function does not exist, + + * **TYPE_OF_EMPLOYMENT_NOT_FOUND** when provided type of employment + does not exist, + + * **JOB_AD_LANGUAGE_NOT_FOUND** when provided job ad language does + not exist, + + * **EEO_CATEGORY_NOT_FOUND** when provided eeo category does not + exist, + + * **JOB_PROPERTY_REQUIRED** when some job property is required to + create job, + + * **INVALID_JOB_PROPERTY_VALUE_ID** when provided job property value + id does not exist for required property, + + * **INVALID_JOB_PROPERTY_VALUE_TYPE** when invalid value type is + used for job property, + + * **VALUE_INACTIVE** when job property's value is not active and + cannot be set. + + * **INVALID_TEXT_FORMAT** when job property's value contains invalid + text + + * **INVALID_BRAND_VALUE** when provided brand value is invalid + + * **TYPE_OF_EMPLOYMENT_NOT_ALLOWED** when provided type of + employment is not allowed in country + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Job access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with code + + * **JOB_TEMPLATES_MANAGEMENT_FORBIDDEN** when not allowed to create + job templates. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Input validation fails + /jobs/{jobId}/status: + parameters: + - $ref: '#/components/parameters/jobId' + put: + tags: + - jobs + summary: Updates job status + operationId: Jobs_updateStatus + security: + - key: [] + - oauth: + - jobs_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/JobStatusUpdate' + required: true + responses: + '201': + description: Updated job status + content: + application/json: + schema: + $ref: '#/components/schemas/JobStatusUpdate' + '403': + description: Job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Job not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /jobs/{jobId}/status/history: + parameters: + - $ref: '#/components/parameters/jobId' + get: + tags: + - jobs + summary: Job status history + operationId: Jobs_getStatusHistory + security: + - key: [] + - oauth: + - jobs_read + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: Job status history + content: + application/json: + schema: + $ref: '#/components/schemas/JobStatusHistory' + '401': + description: Job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /jobs/{jobId}/approvals/latest: + parameters: + - $ref: '#/components/parameters/jobId' + get: + tags: + - jobs + summary: Get latest approval request for given job + operationId: Jobs_getLatestApprovals + security: + - key: [] + - oauth: + - jobs_read + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: Job details of latest approval request + content: + application/json: + schema: + $ref: '#/components/schemas/JobApproval' + '401': + description: Job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with codes + + * **NO_ACCESS_TO_APPROVALS** when not permitted to access job + approvals + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes + * **APPROVALS_NOT_FOUND** There is no approval for current job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /job-applications/{jobApplicationId}: + parameters: + - $ref: '#/components/parameters/JobApplicationId' + get: + tags: + - job-applications + summary: Get a job application + operationId: Jobapplications_getById + security: + - key: [] + - oauth: + - job_applications_read + description: Get a job application for given job application ID. + responses: + '200': + description: Job application + content: + application/json: + schema: + $ref: '#/components/schemas/JobApplication' + '400': + description: | + with codes: + * **INVALID_JOB_APPLICATION_ID** when invalid jobApplicationId + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **JOB_APPLICATION_NOT_FOUND** when job application not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /messages/shares: + post: + tags: + - messages + summary: >- + Shares new messages on Hireloop with Users, Hiring Teams or Everyone and + sends emails. + operationId: Messages_shareNewMessages + security: + - key: [] + - oauth: + - messages_write + description: > + How does it work: + + * In **content** field, provide a text to be shared. + + * @-mention users to send them an email + * In **content** field use **@[USER:id]** to mention a User, e.g. @[USER:324132421] + * Email responses are added as comments to your update + + * \#-tag candidates to link updates to their profiles + * In **content** field use **#[CANDIDATE:id]** to tag a candidate, e.g. #[CANDIDATE:9847954623] + * Use **shareWith** to share a feed update with individuals, hiring + teams or everyone + * In **users** field, provide an array of User IDs with which you want to share, e.g. "users": ["12343542356","12343542357"]. + * In **hiringTeamOf** field, provide an array of Job IDs, this will share message with a full hiring team of those jobs, e.g. "hiringTeamOf": ["123423432322","123423432324"]. + * **everyone** flag allows sharing with everyone in a company. If not provided, defaults to **false**. + * **openNote** flag allows sharing with everyone in a company that has access to the candidate. If not provided, defaults to **false** + requestBody: + description: Message to post + content: + application/json: + schema: + $ref: '#/components/schemas/Message' + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/MessageDetails' + '400': + description: > + with codes: + + * **INVALID_VISIBILITY_OPTIONS** when specifying openNote and + everyone flag set to true in the same time, + + * **JOB_NOT_FOUND** when sharing with hiring team of jobs that do + not exist, + + * **NO_ACCESS_TO_CANDIDATE** when tagging candidate you do not have + access to, + + * **MENTIONED_USERS_NOT_FOUND** when mentioning users that do not + exist, + + * **SHARED_WITH_USERS_NOT_FOUND** when sharing with users that do + not exist, + + * **TOO_MANY_RECIPIENTS**, when more than 100 message recipients in + total (mentioned directly or being a part of mentioned hiring teams) + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /messages/shares/{id}: + delete: + tags: + - messages + summary: Delete a message + operationId: Messages_deleteById + security: + - key: [] + - oauth: + - messages_manage + description: >- + Delete a message with a given id. Deleted message is no longer visible + on Hireloop. + parameters: + - $ref: '#/components/parameters/MessageId' + responses: + '204': + description: Message successfully deleted + '403': + description: No permission to delete a message + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Message not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /messages: + get: + tags: + - messages + summary: Fetch messages + operationId: Messages_getByCandidateAndJobId + security: + - key: [] + - oauth: + - messages_read + description: >- + Search for messages of given candidate. Use jobId parameter to filter + results to messages only for specific job application. Accessible only + for users with ADMINISTRATOR role. + parameters: + - $ref: '#/components/parameters/CandidateId' + - $ref: '#/components/parameters/JobId' + - $ref: '#/components/parameters/PageId' + - $ref: '#/components/parameters/Limit' + responses: + '200': + description: Messages successfully fetched + content: + application/json: + schema: + $ref: '#/components/schemas/MessagesView' + headers: + Link: + description: > + Links to related resources, in the format defined by + + [RFC 5988](https://tools.ietf.org/html/rfc8288#section-3). + + This will include a link with relation type `next` to the + + next page (containing `pageId` query parameter), if there is a + next page. + schema: + type: string + '400': + description: > + with codes: + + * **CANDIDATE_NOT_FOUND** when candidate with given id does not + exist + + * **JOB_NOT_FOUND** when job with given id does not exist + + * **APPLICATION_NOT_FOUND** when candidate does not have application + for given job + '403': + description: No permission to access messages + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /candidates/{id}/jobs/{jobId}/offers: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + get: + tags: + - offers + summary: Get candidate's offers + operationId: Offers_getCandidateJobOffers + security: + - key: [] + - oauth: + - candidates_offers_read + responses: + '200': + description: Candidate's offers + content: + application/json: + schema: + $ref: '#/components/schemas/Offers' + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: | + with code **NO_ACCESS_TO_OFFERS** when not permitted to see offers + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Offers not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /candidates/{id}/jobs/{jobId}/offers/{offerId}: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + get: + tags: + - offers + summary: Get candidate's offer + operationId: Offers_getCandidateOffer + security: + - key: [] + - oauth: + - candidates_offers_read + parameters: + - description: Identifier of a Offer + in: path + name: offerId + required: true + schema: + type: string + responses: + '200': + description: Candidate's offer + content: + application/json: + schema: + $ref: '#/components/schemas/Offer' + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: | + with code **NO_ACCESS_TO_OFFERS** when not permitted to see offers + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Offer not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /candidates/{id}/jobs/{jobId}/offers/{offerId}/approvals/latest: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + get: + tags: + - offers + summary: Get latest approval request for candidate's offer + operationId: Offers_getLatestApprovalRequest + security: + - key: [] + - oauth: + - candidates_offers_read + parameters: + - description: Identifier of a Offer + in: path + name: offerId + required: true + schema: + type: string + responses: + '200': + description: Latest approval request for given offer + content: + application/json: + schema: + $ref: '#/components/schemas/ApprovalRequest' + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with code + + * **NO_ACCESS_TO_OFFERS** when not permitted to see offers * + **NO_ACCESS_TO_APPROVALS** when not permitted to access offer + approvals + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + * **OFFERS_NOT_FOUND** + * **APPROVALS_NOT_FOUND** + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /offers: + get: + tags: + - offers + summary: Search offers by criteria + operationId: Offers_searchByCriteria + security: + - key: [] + description: >- + Enables you to get a list of existing offers. The number of offers + returned as part of the list can be modified using the offset and limit + parameters. These results will be sorted using lastUpdateDate. + parameters: + - description: >- + number of offers to return. max number of offers returned by single + call is 100 + name: limit + in: query + schema: + type: integer + format: int32 + - description: number of offers to skip while processing result + name: offset + in: query + schema: + type: integer + format: int32 + - description: >- + offer status; available values are: INACTIVE, UNDER_REVIEW, ACTIVE, + REJECTED + name: status + in: query + schema: + type: string + - description: >- + full text query. will match offers with name and description + matching query string + name: q + in: query + schema: + type: string + - description: >- + id of a job posting; allows getting offer information using Posting + Id coming from Job Board API; not relevant for Assessment vendors + name: postingId + in: query + schema: + type: string + responses: + '200': + description: Offers matching search criteria. + content: + application/json: + schema: + $ref: '#/components/schemas/Offers' + '403': + description: | + with code **NO_ACCESS_TO_OFFERS** when not permitted to see offers + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + default: + description: List of found offers + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiListResult' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiListResult' + deprecated: true + post: + tags: + - offers + summary: Create offer + operationId: Offers_insertNewOffer + security: + - key: [] + description: >- + Enables you to insert new offers. This operation requires passing an Offer + object as part of a POST request. + requestBody: + description: >- + Offer + object that needs to be passed over. Please see the Model Schema on + the right. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiOffer' + responses: + default: + description: New offer created + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiOffer' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiOffer' + deprecated: true + /offers/{offerId}/documents: + get: + tags: + - offers + summary: Get a list of documents related to sent offer. + operationId: Offers_getRelatedDocuments + security: + - key: [] + - oauth: + - candidates_offers_read + parameters: + - description: Identifier of an offer. + in: path + name: offerId + required: true + schema: + type: string + responses: + '200': + description: List of documents related to sent offer. + content: + application/json: + schema: + $ref: '#/components/schemas/OfferDocumentsList' + '400': + description: Malformed request. ID format is invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Offer not found or lack of access to the offer. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Offer has not been sent to the candidate. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Offer was sent with an unsupported provider. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /offers/{offerId}/documents/{documentId}: + get: + tags: + - offers + summary: Get a given document in a given sent offer + operationId: Offers_getDocument + security: + - key: [] + - oauth: + - candidates_offers_read + parameters: + - description: Identifier of an offer. + name: offerId + in: path + required: true + schema: + type: string + - description: Identifier of a document. + name: documentId + in: path + required: true + schema: + type: string + responses: + '200': + description: Requested file. + content: + application/octet-stream: + schema: + $ref: '#/components/schemas/OffersGetDocumentResponse' + '400': + description: Malformed request. ID format is invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + Forbidden from downloading offer because of detected malware in + document. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Offer or document not found or lack of access. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Offer was not sent to the candidate. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Offer was sent with an unsupported provider. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /assessments/{assessmentOrderId}/comments/{commentId}: + get: + tags: + - comments + summary: Get comment by id + operationId: Comments_getById + security: + - key: [] + description: Getting details of a comment in a particular assessment order. + parameters: + - description: unique id of an assessment order + name: assessmentOrderId + in: path + required: true + schema: + type: string + - description: unique id of an assessment comment + name: commentId + in: path + required: true + schema: + type: string + responses: + default: + description: Assessment comment + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentComment' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentComment' + deprecated: true + /assessments/{assessmentOrderId}/comments: + get: + tags: + - comments + summary: List comments + operationId: Comments_listByAssessmentOrderId + security: + - key: [] + description: >- + Enables you to get a list of comments associated with a particular + assessment order. + parameters: + - description: unique id of an assessment order + name: assessmentOrderId + in: path + required: true + schema: + type: string + - description: >- + number of comments to return. max number of comments returned by + single call is 100 + name: limit + in: query + schema: + type: string + - description: number of comments to skip while processing result + name: offset + in: query + schema: + type: string + responses: + default: + description: List of assessment comments + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentCommentListResult' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentCommentListResult' + deprecated: true + post: + tags: + - comments + summary: Add new comment + operationId: Comments_addNewCommentToAssessmentOrder + security: + - key: [] + description: Adding new comment to an assessment order. + parameters: + - description: unique id of an assessment order + name: assessmentOrderId + in: path + required: true + schema: + type: string + requestBody: + description: >- + Body object that should contain author information (it's not required + but this will be displayed as author of the message). Message is + required (which will be displayed to SmartRecruiters user). Please see + the Model Schema on the right. + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiCommentRequest' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiCommentRequest' + required: true + responses: + default: + description: New assessment comment added + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentComment' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentComment' + deprecated: true + /assessments/{assessmentOrderId}/results/{resultId}/attachments/{attachmentId}: + get: + tags: + - attachments + summary: Get assessment attachment + operationId: Attachments_getDetails + security: + - key: [] + description: Enables you to get details of attachments in a particular assessment. + parameters: + - description: unique id of an assessment order + name: assessmentOrderId + in: path + required: true + schema: + type: string + - description: unique result id + name: resultId + in: path + required: true + schema: + type: string + - description: unique id of an attachment + name: attachmentId + in: path + required: true + schema: + type: string + responses: + default: + description: Assessment attachment + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentAttachment' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentAttachment' + deprecated: true + post: + tags: + - attachments + summary: Update assessment attachment + operationId: Attachments_updateFile + security: + - key: [] + description: >- + Enables you to update ( replace ) files already submitted to assessment + result. + parameters: + - description: unique id of an assessment order + name: assessmentOrderId + in: path + required: true + schema: + type: string + - description: unique result id + name: resultId + in: path + required: true + schema: + type: string + - description: unique id of an attachment + name: attachmentId + in: path + required: true + schema: + type: string + requestBody: + description: >- + Attachment file - we accept only PDF files with max size: 20 * 1024 * + 1024. + content: + multipart/form-data: + schema: + $ref: '#/components/schemas/ApiAttachment' + required: true + responses: + default: + description: Assessment attachment updated + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentAttachment' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentAttachment' + deprecated: true + /assessments/{assessmentOrderId}/results/{resultId}/attachments: + get: + tags: + - attachments + summary: List assessment results + operationId: Attachments_getList + security: + - key: [] + description: >- + Enables you to get a list of attachments submitted to a particular + assessment result. + parameters: + - description: unique id of an assessment order + name: assessmentOrderId + in: path + required: true + schema: + type: string + - description: unique result id + name: resultId + in: path + required: true + schema: + type: string + - description: number of elements to return. max value is 100 + name: limit + in: query + schema: + type: integer + format: int32 + - description: number of elements to skip while processing result + name: offset + in: query + schema: + type: integer + format: int32 + responses: + default: + description: Assessment attachment list + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentAttachmentListResult' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentAttachmentListResult' + deprecated: true + post: + tags: + - attachments + summary: Attach assessment results + operationId: Attachments_submitNewAssessmentResultFile + security: + - key: [] + description: Enables you to attach files to and submit a new assessment result. + parameters: + - description: unique id of an assessment order + name: assessmentOrderId + in: path + required: true + schema: + type: string + - description: unique result id + name: resultId + in: path + required: true + schema: + type: string + requestBody: + description: >- + Attachment file - we accept only PDF files with max size: 20 * 1024 * + 1024. + content: + multipart/form-data: + schema: + $ref: '#/components/schemas/ApiAttachment' + required: true + responses: + default: + description: File attached to assessment result + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentAttachment' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentAttachment' + deprecated: true + /assessments/{assessmentOrderId}/results/{resultId}: + get: + tags: + - results + summary: Get assessment results by id + operationId: Results_findById + security: + - key: [] + description: Enables you to get details of a particular assessment result. + parameters: + - description: unique id of an assessment order + name: assessmentOrderId + in: path + required: true + schema: + type: string + - description: unique id of an assessment result + name: resultId + in: path + required: true + schema: + type: string + responses: + default: + description: Assessment result + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentResult' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentResult' + deprecated: true + /assessments/{assessmentOrderId}/results: + get: + tags: + - results + summary: List assessment results + operationId: Results_listByAssessmentOrderId + security: + - key: [] + description: >- + Enables you to get a list of results submitted to a particular + assessment order. + parameters: + - description: unique id of an assessment order + name: assessmentOrderId + in: path + required: true + schema: + type: string + - description: number of elements to return. max value is 100 + name: limit + in: query + schema: + type: integer + format: int32 + - description: number of elements to skip while processing result + name: offset + in: query + schema: + type: integer + format: int32 + responses: + default: + description: Assessment result list + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentResultListResult' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentResultListResult' + deprecated: true + post: + tags: + - results + summary: Submit assessment results + operationId: Results_submitNewAssessmentResult + security: + - key: [] + description: Enables you to submit a new assessment result. + parameters: + - description: unique id of an assessment order + name: assessmentOrderId + in: path + required: true + schema: + type: string + requestBody: + description: >- + AssessmentResult + object that should contain author information (it's not required but + this will be displayed as author of the message) and score (which will + be displayed to SmartRecruiters user). Please see the Model Schema on + the right. + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentResult' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentResult' + responses: + default: + description: New assessment result submitted + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentResult' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentResult' + deprecated: true + /assessments/{assessmentOrderId}/accept: + post: + tags: + - assessments + summary: Accept Assessment order + operationId: Assessments_acceptOrder + security: + - key: [] + description: Enables you to accept an assessment order. + parameters: + - description: unique id of an assessment order + name: assessmentOrderId + in: path + required: true + schema: + type: string + requestBody: + description: >- + Body object that should contain author information (it's not required + but this will be displayed as author of the message). Message is + required (which will be displayed to SmartRecruiters user). Please see + the Model Schema on the right. + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiCommentRequest' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiCommentRequest' + required: true + responses: + default: + description: Assessment order accepted + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrder' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrder' + deprecated: true + /assessments/{assessmentOrderId}/complete: + post: + tags: + - assessments + summary: Complete Assessment order + operationId: Assessments_markAsCompleted + security: + - key: [] + description: Enables you to mark the status of an assessment order as COMPLETED. + parameters: + - description: unique id of an assessment order + name: assessmentOrderId + in: path + required: true + schema: + type: string + requestBody: + description: >- + Body object that should contain author information (it's not required + but this will be displayed as author of the message). Message is + required (which will be displayed to SmartRecruiters user). Please see + the Model Schema on the right. + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiCommentRequest' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiCommentRequest' + required: true + responses: + default: + description: Assessment order completed + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrder' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrder' + deprecated: true + /assessments/{assessmentOrderId}: + get: + tags: + - assessments + summary: Get Assessment Order by id + operationId: Assessments_getById + security: + - key: [] + description: Get Assessment Order details by ID. + parameters: + - description: unique id of an assessment order + name: assessmentOrderId + in: path + required: true + schema: + type: string + responses: + default: + description: Assessment order + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrder' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrder' + deprecated: true + /assessments: + get: + tags: + - assessments + summary: Get Assessment orders by criteria + operationId: Assessments_listByCriteria + security: + - key: [] + description: Get list of Assessment Orders. + parameters: + - description: number of elements to return. max value is 100 + name: limit + in: query + schema: + type: integer + format: int32 + - description: number of elements to skip while processing result + name: offset + in: query + schema: + type: integer + format: int32 + - description: >- + assessment order status; available values: NEW, IN_PROGRESS, + REJECTED, COMPLETED + name: status + in: query + schema: + type: string + - description: >- + createDate filter. search will return only orders created after + given date. Date format need to comply with ISO8601 format: + yyyy-MM-ddTHH:mm:ss.SSSZZ + name: fromDate + in: query + schema: + type: string + - description: >- + createDate filter. search will return only orders created before + given date. Date format need to comply with ISO8601 format: + yyyy-MM-ddTHH:mm:ss.SSSZZ + name: toDate + in: query + schema: + type: string + - description: 'sorting criteria. Available options: createDate' + name: sortBy + in: query + schema: + type: string + - description: 'sorting direction. Available options: asc, desc' + name: sortDir + in: query + schema: + type: string + default: asc + - description: >- + UUID of a candidate. Corresponds to candidate ID used in Customer + API + name: candidateUuid + in: query + schema: + type: string + - description: UUID of a job. Corresponds to job ID used in Customer API + name: jobUuid + in: query + schema: + type: string + responses: + default: + description: Assessment order list + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrderListResult' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrderListResult' + deprecated: true + post: + tags: + - assessments + summary: >- + insert new Assessment order - end point for testing only - it will not + create valid assessment order + operationId: Assessments_createNewOrder + security: + - key: [] + requestBody: + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrderRequest' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrderRequest' + responses: + default: + description: Assessment order inserted + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrder' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrder' + deprecated: true + /assessments/{assessmentOrderId}/reject: + post: + tags: + - assessments + summary: Reject Assessment order + operationId: Assessments_rejectOrder + security: + - key: [] + description: Enables you to reject an assessment order. + parameters: + - description: unique id of an assessment order + name: assessmentOrderId + in: path + required: true + schema: + type: string + requestBody: + description: >- + Body object that should contain author information (it's not required + but this will be displayed as author of the message). Message is + required (which will be displayed to SmartRecruiters user) and should + contain details on why the order has been rejected. Please see the + Model Schema on the right. + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiCommentRequest' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiCommentRequest' + required: true + responses: + default: + description: Assessment order rejected + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrder' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrder' + deprecated: true + /configs: + get: + tags: + - configs + summary: Fetch list of vendor configs + operationId: Configs_getList + security: + - key: [] + description: Enables you to get all specified configuration entries. + responses: + default: + description: Configs list + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiConfigListResult' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiConfigListResult' + deprecated: true + post: + tags: + - configs + summary: Add new config + operationId: Configs_addNewConfig + security: + - key: [] + description: >- + Enables you to add a new config to the configs list. This operation + requires passing an instance of the Config + object with the Id and Value fields set. An update is performed if the + ID that you pass already exists. + requestBody: + description: >- + Config + object that needs to contain Id and Value set. Please see the Model + Schema on the right. + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/Config' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Config' + responses: + default: + description: New config added + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/Config' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Config' + deprecated: true + /configs/{configId}: + get: + tags: + - configs + summary: Get config for vendor + operationId: Configs_getByConfigId + security: + - key: [] + description: Enables you to get the config value for a given Id. + parameters: + - description: unique id of a config entry + name: configId + in: path + required: true + schema: + type: string + responses: + default: + description: Config + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/Config' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Config' + deprecated: true + post: + tags: + - configs + summary: Update config + operationId: Configs_updateConfigById + security: + - key: [] + description: >- + Enables you to update config in the configs list. This operation + requires passing a config id and instance of the Config + object with the Id and Value fields set. + parameters: + - description: unique id of a config entry + name: configId + in: path + required: true + schema: + type: string + requestBody: + description: >- + Config + object that needs to contain Id and Value set. Please see the Model + Schema on the right. + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/Config' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Config' + responses: + default: + description: Config updated + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/Config' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Config' + deprecated: true + /offers/{offerId}: + get: + tags: + - offers + summary: Get offer by id + operationId: Offers_getById + security: + - key: [] + description: >- + Enables you to get offer details. This operation requires passing an + offer id as part of the REQUEST parameter. + parameters: + - description: unique id of an offer + name: offerId + in: path + required: true + schema: + type: string + responses: + default: + description: Offer + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiOffer' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiOffer' + deprecated: true + post: + tags: + - offers + summary: Update offer + operationId: Offers_updateOffer + security: + - key: [] + description: >- + Enables you to Update existing offers. This operation requires passing + an offer id being changed and an Offer + object as part of the POST request. + parameters: + - description: unique id of an offer + name: offerId + in: path + required: true + schema: + type: string + requestBody: + description: >- + Offer + object that needs to be passed over. Please see the Model Schema on + the right. Required fields are: id, catalogId, name, description, + Terms. + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiOffer' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiOffer' + responses: + default: + description: Offer updated + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiOffer' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiOffer' + deprecated: true + /offers/{offerId}/submit: + post: + tags: + - offers + summary: Submit offer + operationId: Offers_submitForReview + security: + - key: [] + description: >- + Enables you to submit an offer for review. This operation requires + passing an offer ID as part of the REQUEST parameter. + parameters: + - description: unique id of an offer + name: offerId + in: path + required: true + schema: + type: string + responses: + default: + description: Offer submitted for review + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiOffer' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiOffer' + deprecated: true + /offers/{offerId}/withdraw: + post: + tags: + - offers + summary: Withdraw offer + operationId: Offers_withdrawal + security: + - key: [] + description: >- + Enables you to withdrawing an offer from the marketplace. This operation + requires passing an offer id as part of a REQUEST parameter. After a + successful withdraw, the offer is not available in the marketplace + anymore. + parameters: + - description: unique id of an offer + name: offerId + in: path + required: true + schema: + type: string + responses: + default: + description: Offer withdrawn + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiOffer' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiOffer' + deprecated: true + /v1/companies/{companyIdentifier}/postings: + get: + tags: + - postings + summary: Lists active postings published by given company + operationId: Postings_listByCompanyIdentifier + security: + - {} + - key: [] + description: Lists active postings published by given company. Return PostingList + parameters: + - description: Language of translation + in: header + name: accept-language + schema: + $ref: '#/components/schemas/JobAdLanguageCode' + - description: Identifier of a company + in: path + name: companyIdentifier + required: true + schema: + type: string + - description: full-text search query based on a job title, location + in: query + name: q + required: false + schema: + type: string + - description: number of elements to return. max value is 100 + in: query + name: limit + required: false + schema: + type: integer + - description: number of elements to skip while processing result + in: query + name: offset + required: false + schema: + type: integer + - description: > + Filter indicating which postings to return: + + * **PUBLIC**: response will include ONLY public postings + + * **INTERNAL**: response will include ONLY internal postings + + * **INTERNAL_OR_PUBLIC**: response will include internal postings or + public postings, but not both for a single job. If a job has both + types of postings, only internal postings will be returned. NOTE: + when selected, all postings, internal and public, will be treated as + internal. Among other things, this means that screening questions + will not be displayed, and candidates will be marked with the + EMPLOYEE label. + in: query + name: destination + required: false + schema: + type: string + enum: + - PUBLIC + - INTERNAL + - INTERNAL_OR_PUBLIC + - description: > + Filter indicating which postings to return: + + * **REMOTE**: response will include ONLY postings with remote + location type + + * **ONSITE**: response will include ONLY postings with onsite + location type + + * **ANY**: response will include ANY location type + in: query + name: locationType + required: false + schema: + type: string + enum: + - REMOTE + - ONSITE + - ANY + - description: country code filter (part of the location object) + in: query + name: country + required: false + schema: + type: string + - description: region filter (part of the location object) + in: query + name: region + required: false + schema: + type: string + - description: city filter (part of the location object) + in: query + name: city + required: false + schema: + type: string + - description: department filter (department id) + in: query + name: department + required: false + schema: + type: string + - description: > + Job ad language; accepts 2-letter ISO 639-1 language code; multiple + codes can be provided, separated by comma (",") + + Exceptions to the language code ISO format: + + * "en-GB" - "English - English (UK)" + + * "fr-CA" - "French - français (Canada)" + + * "pt-BR" - "Portugal - português (Brasil)" + + * "pt-PT" - "Portugal - português (Portugal)" + + * "zh-TW" - "Chinese (Traditional) - 中文 (香港)" + + * "zh-CN" - "Chinese (Simplified) - 中文 (简体)" + in: query + name: language + required: false + schema: + type: array + items: + $ref: '#/components/schemas/JobAdLanguageCode' + - description: | + Released after filter (ISO8601-formatted) + Format: yyyy-MM-ddTHH:mm:ss.SSSZZ + in: query + name: releasedAfter + required: false + schema: + type: string + format: date-time + - description: > + Filters postings by custom fields. Multiple custom field values can + be provided, separated by comma (","). + + Format: + custom_field.CUSTOM_FIELD_ID=CUSTOM_FIELD_VALUE1_ID,CUSTOM_FIELD_VALUE2_ID + in: query + name: customField + required: false + style: form + schema: + type: object + propertyNames: + pattern: ^custom_field\.[^\s]+$ + additionalProperties: + type: string + pattern: ^[^\s]+$ + example: &ref_0 + custom_field.52d95747e4b0ba7acb9217ea: 23aba1d4-4c81-48f7-9ae2-3ab84ee32a80 + x-examples: + - *ref_0 + responses: + '200': + description: OK + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/PostingList' + /v1/companies/{companyIdentifier}/postings/{postingId}: + get: + tags: + - postings + summary: Get posting by posting id or uuid for given company + operationId: Postings_getByPostingIdOrUuid + security: + - {} + - key: [] + description: >- + Note: In order to update content of a job posting available via the + Posting API, you need to re-post the job in SmartRecruiters application. + parameters: + - description: Language of translation + in: header + name: accept-language + schema: + $ref: '#/components/schemas/JobAdLanguageCode' + - description: Identifier of a company + in: path + name: companyIdentifier + required: true + schema: + type: string + - description: Posting identifier or uuid + in: path + name: postingId + required: true + schema: + type: string + - description: >- + sourceTypeId can be retrieved using [get + /configuration/sources](https://developers.smartrecruiters.com/reference/configurationsourcetypes-1) + endpoint. Used together with **sourceId** and **sourceSubTypeId** to + add source tracking parameter to **applyUrl**. + in: query + name: sourceTypeId + required: false + schema: + type: string + - description: >- + sourceSubTypeId can be retrieved using [get + /configuration/sources](https://developers.smartrecruiters.com/reference/configurationsourcetypes-1) + endpoint. Used together with **sourceId** and **sourceTypeId** to + add source tracking parameter to **applyUrl**. + in: query + name: sourceSubTypeId + required: false + schema: + type: string + - description: >- + sourceId can be retrieved using [get + /configuration/sources/{sourceType}/values](https://developers.smartrecruiters.com/reference/configurationsourcevaluesall-1) + endpoint. Used together with **sourceTypeId** and + **sourceSubTypeId** to add source tracking parameter to + **applyUrl**. + in: query + name: sourceId + required: false + schema: + type: string + responses: + '200': + description: OK + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/Posting' + /v1/companies/{companyIdentifier}/departments: + get: + tags: + - postings + summary: List departments for given company + operationId: Postings_listDepartmentsForCompany + security: + - {} + - key: [] + description: List departments for given company. + parameters: + - description: Language of translation + in: header + name: accept-language + schema: + $ref: '#/components/schemas/JobAdLanguageCode' + - description: Identifier of a company + in: path + name: companyIdentifier + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/Departments' + /files/{reportFileId}/data: + get: + tags: + - files + summary: Download report file + operationId: Files_downloadReportData + security: + - key: [] + - oauth: + - reporting_read + description: > + Use this endpoint to download a specific report file. The response + contains report data in CSV format. + + ### Note + + It is not recommended to attempt downloading large report files via Live + Docs or Internet Browser. To get a large report file, use command line + tools or native HTTP clients. + parameters: + - description: Report file identifier + name: reportFileId + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response. + content: + text/csv: + schema: + $ref: '#/components/schemas/FilesDownloadReportDataResponse' + '401': + description: Returned when a request was not authenticated. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Returned when a caller is not authorized to perform the request. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Returned when there is no report file with the given ID. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /files/{reportFileId}: + get: + tags: + - files + summary: Get report file + operationId: Files_getFileDetails + security: + - key: [] + - oauth: + - reporting_read + description: Use this endpoint to get a specific report file details. + parameters: + - description: Report file identifier + name: reportFileId + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiReportFileResponse' + '401': + description: Returned when a request was not authenticated. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Returned when a caller is not authorized to perform the request. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Returned when there is no report file with the given ID. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /reports/{reportId}/files/recent/data: + get: + tags: + - reports + summary: Download most recent report file + operationId: Reports_downloadRecentFile + security: + - key: [] + - oauth: + - reporting_read + description: > + Use this endpoint to download the most recent report file for a specific + report. The response contains report data in CSV format. In order to get + a successful response, there have to be at least 1 successfully + generated report file for the report. + + ### Etags + + Along with the successful response, the `Etag` HTTP header is returned, + containing ETag identifier of the report file. In order to save + bandwidth resources, the `If-None-Match HTTP` header containing the + recently retrieved report file ETag can be passed with the request. If + there's no report file, that is newer than the one referred in the + `If-None-Match` header, the API responds with HTTP `304 Not Modified` + status code and does not provide content. + + ### Note + + It is not recommended to attempt downloading large report files via Live + Docs or Internet Browser. To get a large report file, use command line + tools or native HTTP clients. + parameters: + - description: Report file ETag to be compared with the most recent report file + name: If-None-Match + in: header + schema: + type: string + - description: Report identifier + name: reportId + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response. + headers: + ETag: + description: Report file ETag + style: simple + schema: + type: string + content: + text/csv: + schema: + $ref: '#/components/schemas/ReportsDownloadRecentFileResponse' + '304': + description: Returned when there's no newer report file available. + '400': + description: Returned when the report ID is invalid. + content: + text/csv;charset=utf-8: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Returned when a request was not authenticated. + content: + text/csv;charset=utf-8: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + Returned when a caller is not authorized to download the report + file. + content: + text/csv;charset=utf-8: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Returned when there is no successfully generated report file. + content: + text/csv;charset=utf-8: + schema: + $ref: '#/components/schemas/ErrorResponse' + /reports/{reportId}/files: + get: + tags: + - reports + summary: Get report files + operationId: Reports_getReportFiles + security: + - key: [] + - oauth: + - reporting_read + description: > + Use this endpoint to fetch a list of report files of a specific report. + Report files are sorted by generation date (newer report files first). + + ### Paging + + Whenever there's more data to be returned, the `nextPage` property will + contain an opaque identifier of the next page. The value can be then + passed as a page query parameter in a subsequent request. Another option + is to use the response's `Link` HTTP header, which contains a web link + to the following page, example: + + ``` + + ; + rel="link" + + ``` + parameters: + - description: Opaque page identifier to be returned. + name: page + in: query + schema: + type: string + - description: Number of entities that should be returned per page. + name: limit + in: query + schema: + maximum: 1000 + minimum: 1 + type: integer + format: int32 + default: 10 + - description: Report identifier + name: reportId + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response. + headers: + Link: + description: Link to the next report files page, if available + style: simple + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/ApiReportFilesResponse' + '400': + description: >- + Returned when the report ID, page parameter or limit parameter is + invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Returned when a request was not authenticated. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Returned when a caller is not authorized to perform the request. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Returned when there is no report with the given ID. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + post: + tags: + - reports + summary: Generate ad-hoc report + operationId: Reports_generateAdhocReportFile + security: + - key: [] + - oauth: + - reporting_write + description: >- + Use this endpoint to generate ad-hoc report. + + NOTE: Report files are generated asynchronously. Ensure the report file + status is: COMPLETED before fetching the data. To check the report file + status use the GET /reports/{reportId}/files/recent endpoint. + parameters: + - description: Report identifier + name: reportId + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiReportFileResponse' + '400': + description: >- + Returned when the report ID or the identity is invalid or the report + is already pending generation. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Returned when a request was not authenticated. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Returned when a caller is not authorized to perform the request. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Returned when there is no report with the given ID. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Returned when the report was modified concurrently. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /reports/{reportId}/files/recent: + get: + tags: + - reports + summary: Get most recent report file + operationId: Reports_getRecentFile + security: + - key: [] + - oauth: + - reporting_read + description: > + Use this endpoint to get the most recent report file details for a + specific report. In order to get a successful response, there have to be + at least 1 successfully generated report file for the report. + + ### Etags + + Along with the successful response, the `Etag` HTTP header is returned, + containing ETag identifier of the report file. In order to save + bandwidth resources, the `If-None-Match HTTP` header containing the + recently retrieved report file ETag can be passed with the request. If + there's no report file, that is newer than the one referred in the + `If-None-Match` header, the API responds with HTTP `304 Not Modified` + status code and does not provide content. + parameters: + - description: Report file ETag to be compared with the most recent report file + name: If-None-Match + in: header + schema: + type: string + - description: Report identifier + name: reportId + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response. + headers: + ETag: + description: Report file ETag + style: simple + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/ApiReportFileResponse' + '304': + description: Returned when there's no newer report file available. + '400': + description: Returned when the report ID is invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Returned when a request was not authenticated. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Returned when a caller is not authorized to perform the request. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Returned when there is no successfully generated report file. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /reports/{reportId}: + get: + tags: + - reports + summary: Get report + operationId: Reports_getDetails + security: + - key: [] + - oauth: + - reporting_read + description: Use this endpoint to get a specific report details. + parameters: + - description: Report identifier + name: reportId + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful response. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiReportResponse' + '400': + description: Returned when the report ID is invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Returned when a request was not authenticated. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Returned when a caller is not authorized to perform the request. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Returned when there is no report with the given ID. + /reports: + get: + tags: + - reports + summary: Get reports + operationId: Reports_listByModificationDate + security: + - key: [] + - oauth: + - reporting_read + description: > + Use this endpoint to fetch a list of reports. Reports are sorted by + modification date (newer reports first). + + ### Paging + + Whenever there's more data to be returned, the `nextPage` property will + contain an opaque identifier of the next page. The value can be then + passed as a page query parameter in a subsequent request. Another option + is to use the response's `Link` HTTP header, which contains a web link + to the following page, example: + + ``` + + ; + rel="link" + + ``` + parameters: + - description: Opaque page identifier to be returned. + name: page + in: query + schema: + type: string + - description: Number of entities that should be returned per page. + name: limit + in: query + schema: + maximum: 1000 + minimum: 1 + type: integer + format: int32 + default: 10 + responses: + '200': + description: Successful response. + headers: + Link: + description: Link to the next reports page, if available + style: simple + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/ApiReportsResponse' + '400': + description: Returned when the page parameter or limit parameter is invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Returned when a request was not authenticated. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Returned when a caller is not authorized to perform the request. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /reviews: + get: + tags: + - reviews + summary: Retrieves all reviews for specified candidate and job + operationId: Reviews_getAllForCandidateJob + security: + - key: [] + - oauth: + - reviews_read + parameters: + - description: ID of the candidate + in: query + name: candidateId + required: true + schema: + $ref: '#/components/schemas/Uuid' + - description: ID of the job + in: query + name: jobId + required: true + schema: + $ref: '#/components/schemas/Uuid' + responses: + '200': + description: Review was retreived + content: + application/json: + schema: + $ref: '#/components/schemas/ReviewsGetAllForCandidateJobResponse' + '401': + description: > + with codes: + + * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is not + authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + With code **'APPLICATION_NOT_FOUND'** when there is no application + of the candidate in a the job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + post: + tags: + - reviews + summary: Creates a review + operationId: Reviews_createReview + security: + - key: [] + - oauth: + - reviews_write + requestBody: + description: Review to be created + content: + application/json: + schema: + $ref: '#/components/schemas/ReviewInput' + required: true + responses: + '201': + description: Review was created + content: + application/json: + schema: + $ref: '#/components/schemas/Review' + '401': + description: > + with codes: + + * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is not + authorized to access resource + + * **REVIEWER_NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when reviewer is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden to create a review + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + When input validation fails or with codes: + + * **INVALID_OVERALL** when invalid overall + + * **NON_EXISTING_REVIEWER** when reviewer does not exist + + * **INACTIVE_OR_DELETED_REVIEWER** when reviewer is inactive or + deleted + + * **CANDIDATE_NOT_FOUND** when candidate with given id not found + + * **JOB_NOT_FOUND** when job with given id not found + + * **APPLICATION_NOT_FOUND** when application for given candidate id + and job id not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + /reviews/{reviewId}: + parameters: + - $ref: '#/components/parameters/ReviewId' + get: + tags: + - reviews + summary: Retrieves a review + operationId: Reviews_getById + security: + - key: [] + - oauth: + - reviews_read + responses: + '200': + description: Review was retreived + content: + application/json: + schema: + $ref: '#/components/schemas/Review' + '400': + description: | + with codes: + * **INVALID_REVIEW_ID** when review id is invalid + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: > + with codes: + + * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is not + authorized to access resource + + * **REVIEWER_NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when reviewer is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden to retreive a review + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **REVIEW_NOT_FOUND** when no review with given id is found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + patch: + tags: + - reviews + summary: Updates a review + operationId: Reviews_updateReviewById + security: + - key: [] + - oauth: + - reviews_write + requestBody: + description: Review to be updated + content: + application/json: + schema: + $ref: '#/components/schemas/ReviewToUpdateInput' + required: true + responses: + '204': + description: Review was updated + '400': + description: | + with codes: + * **INVALID_SOURCE** when review source is invalid + * **INVALID_REVIEW_ID** when review id is invalid + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: > + with codes: + + * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is not + authorized to access resource + + * **REVIEWER_NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when reviewer is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden to retreive a review + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **REVIEW_NOT_FOUND** when no review with given id is found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + When input validation fails or with codes: + + * **INVALID_OVERALL** when invalid overall + + * **NON_EXISTING_REVIEWER** when reviewer does not exist + + * **INACTIVE_OR_DELETED_REVIEWER** when reviewer is inactive or + deleted + + * **REVIEWER_ID_DOES_NOT_MATCH** when reviewer id does not match + reviewer id in review + '500': + $ref: '#/components/responses/ServerError' + delete: + tags: + - reviews + summary: Deletes a review + operationId: Reviews_deleteReviewById + security: + - key: [] + - oauth: + - reviews_write + parameters: + - $ref: '#/components/parameters/ReviewerId' + responses: + '204': + description: Review was deleted + '400': + description: | + with codes: + * **INVALID_SOURCE** when review source is invalid + * **INVALID_REVIEW_ID** when review id is invalid + * **INVALID_REVIEWER_ID** when review id or employee id is invalid + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: > + with codes: + + * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is not + authorized to access resource + + * **REVIEWER_NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when reviewer is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden to retreive a review + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **REVIEW_NOT_FOUND** when no review with given id is found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + When input validation fails or with codes: + + * **NON_EXISTING_REVIEWER** when reviewer does not exist + + * **INACTIVE_OR_DELETED_REVIEWER** when reviewer is inactive or + deleted + + * **REVIEWER_ID_DOES_NOT_MATCH** when reviewer id does not match + reviewer id in review + '500': + $ref: '#/components/responses/ServerError' + /new-hires/{newHireId}: + parameters: + - $ref: '#/components/parameters/NewHireId' + get: + tags: + - new-hires + summary: Returns details for a single New Hire + operationId: Newhires_getDetails + security: + - key: [] + - oauth: + - new_hires_read + responses: + '200': + description: New Hire details were retrieved + content: + application/json: + schema: + $ref: '#/components/schemas/NewHire' + '401': + description: > + With codes: * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + With codes: + + * **'NEW_HIRE_NOT_FOUND'** when there is no New Hire present for + given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + /onboarding-processes/{onboardingProcessId}: + parameters: + - $ref: '#/components/parameters/OnboardingProcessId' + get: + tags: + - onboarding-processes + summary: Returns details of a single Onboarding Process + operationId: Onboardingprocesses_getDetails + security: + - key: [] + - oauth: + - onboarding_processes_read + responses: + '200': + description: Onboarding Process details were retrieved + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardingProcess' + '401': + description: > + With codes: * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + With codes: + + * **'ONBOARDING_PROCESS_NOT_FOUND'** when there is no Onboarding + Process for given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + /web-form-assignments/{webFormAssignmentId}/form-answers: + parameters: + - $ref: '#/components/parameters/WebFormAssignmentId' + get: + tags: + - assignments-submissions + summary: Returns answers submitted for a single Web Form Assignment + operationId: Assignmentssubmissions_getFormAnswers + security: + - key: [] + - oauth: + - assignments_submissions_read + responses: + '200': + description: Answers submitted for Web Form Assignment were retrieved + content: + application/json: + schema: + $ref: '#/components/schemas/WebFormAnswers' + '401': + description: > + With codes: * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + With codes: + + * **'WEB_FORM_ASSIGNMENT_NOT_FOUND'** when there is no Web Form + Assignment for given id + + * **'WEB_FORM_ASSIGNMENT_ANSWERS_NOT_FOUND'** when there are no Web + Form Assignment Answers for given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + /web-form-assignments/{webFormAssignmentId}/fields-metadata: + parameters: + - $ref: '#/components/parameters/WebFormAssignmentId' + get: + tags: + - assignments-submissions + summary: >- + Returns metadata for the fields that belong to a single Web Form + Assignment + operationId: Assignmentssubmissions_getFieldsMetadata + security: + - key: [] + - oauth: + - assignments_submissions_read + responses: + '200': + description: >- + The metadata of the fields that belong to a single Web Form + Assignment was retrieved + content: + application/json: + schema: + $ref: '#/components/schemas/WebFormFieldsMetadata' + '401': + description: > + With codes: * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + With codes: + + * **'WEB_FORM_ASSIGNMENT_NOT_FOUND'** when there is no Web Form + Assignment for given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + /fillable-pdf-form-assignments/{fillablePdfFormAssignmentId}/form-answers: + parameters: + - $ref: '#/components/parameters/FillablePdfFormAssignmentId' + get: + tags: + - assignments-submissions + summary: Returns answers submitted for a single Fillable PDF Form Assignment + operationId: Assignmentssubmissions_getFormAnswers + security: + - key: [] + - oauth: + - assignments_submissions_read + responses: + '200': + description: >- + PDF file filled with submitted answers Fillable PDF Form Assignment + was retrieved + content: + application/pdf: + schema: + $ref: >- + #/components/schemas/AssignmentssubmissionsGetFormAnswersResponse + '401': + description: > + With codes: * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + With codes: + + * **'FILLABLE_PDF_FORM_ASSIGNMENT_NOT_FOUND'** when there is no + Filalble PDF Form Assignment for given id + + * **'FILLABLE_PDF_FORM_ASSIGNMENT_ANSWERS_NOT_FOUND'** when there + are no Filalble PDF Form Assignment Answers for given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + /onboarding-processes/{onboardingProcessId}/assignments: + parameters: + - $ref: '#/components/parameters/OnboardingProcessId' + get: + tags: + - assignments + summary: Returns Assignments associated with a single Onboarding Process + operationId: Assignments_getByProcessId + security: + - key: [] + - oauth: + - assignments_read + responses: + '200': + description: >- + Assignments associated with the given Onboarding Process were + returned + content: + application/json: + schema: + $ref: '#/components/schemas/Assignments' + '401': + description: > + With codes: * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + With codes: + + * **'ONBOARDING_PROCESS_NOT_FOUND'** when there is no Onboarding + Process for given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + /activity-assignments/{activityAssignmentId}/attachments: + parameters: + - $ref: '#/components/parameters/ActivityAssignmentId' + get: + tags: + - assignments-submissions + summary: Returns list of Attachments submitted for a single Activity Assignment + operationId: Assignmentssubmissions_listAttachments + security: + - key: [] + - oauth: + - assignments_submissions_read + responses: + '200': + description: >- + Attachments submitted for the given Activity Assignment were + returned + content: + application/json: + schema: + $ref: '#/components/schemas/ActivityAssignmentAttachments' + '401': + description: > + With codes: * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + With codes: + + * **'ACTIVITY_ASSIGNMENT_NOT_FOUND'** when there is no Activity + Assignment for given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + /activity-assignments/{activityAssignmentId}/attachments/{attachmentId}: + parameters: + - $ref: '#/components/parameters/ActivityAssignmentId' + - $ref: '#/components/parameters/AttachmentId' + get: + tags: + - assignments-submissions + summary: Returns single Attachment for specific Activity Assignment + operationId: Assignmentssubmissions_getSingleAttachment + security: + - key: [] + - oauth: + - assignments_submissions_read + responses: + '200': + description: >- + Single Attachment submitted for the given Activity Assignment was + retrieved + content: + application/octet-stream: + schema: + $ref: >- + #/components/schemas/AssignmentssubmissionsGetSingleAttachmentResponse + '401': + description: > + With codes: * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + With codes: + + * **'ACTIVITY_ASSIGNMENT_NOT_FOUND'** when there is no Activity + Assignment for given id + + * **'ATTACHMENT_NOT_FOUND'** when there is no Attachment for given + id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + /users: + get: + tags: + - users + summary: List users of your company + operationId: Users_list + security: + - key: [] + - oauth: + - users_read + parameters: + - description: full-text search query based on firstName, lastName, email + in: query + name: q + schema: + type: string + minLength: 3 + - description: number of elements to return. max value is 100 + in: query + name: limit + schema: + type: integer + minimum: 1 + maximum: 100 + default: 100 + - description: number of elements to skip while processing result + in: query + name: offset + schema: + type: integer + minimum: 0 + default: 0 + - description: >- + ISO8601-formatted time boundaries for the user update time, Format: + yyyy-MM-ddTHH:mm:ss.SSSZZ + in: query + name: updatedAfter + schema: + type: string + format: date-time + responses: + '200': + description: List of users in your company + content: + application/json: + schema: + $ref: '#/components/schemas/Users' + '400': + description: | + with codes + * **INVALID_PAGE_ID** when pageId is not a correct value + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: | + with code * **PERMISSION_DENIED** Not permitted to manage users + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + deprecated: true + post: + tags: + - users + summary: Create a new user + operationId: Users_createNewUser + security: + - key: [] + - oauth: + - users_manage + requestBody: + description: User object to be created + content: + application/json: + schema: + $ref: '#/components/schemas/NewUser' + responses: + '201': + description: Created user + content: + application/json: + schema: + $ref: '#/components/schemas/UserEntity' + '400': + description: > + with codes + + * **LANGUAGE_DISABLED** User language is not available as part of + company subscription plan + + * **INVALID_USER_NAME** when firstName or lastName contains invalid + characters (e.g. leading or trailing spaces) + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: | + with code * **PERMISSION_DENIED** Not permitted to access users + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: User already exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + $ref: '#/components/responses/SemanticError' + deprecated: true + /users/me: + get: + tags: + - users + summary: Get details of my user + operationId: Users_getDetails + security: + - key: [] + - oauth: + - users_read + responses: + '200': + description: My user details + content: + application/json: + schema: + $ref: '#/components/schemas/UserEntity' + deprecated: true + /users/{id}: + parameters: + - $ref: '#/components/parameters/userId' + get: + tags: + - users + summary: Get details of a user with given id + operationId: Users_getDetails + security: + - key: [] + - oauth: + - users_read + responses: + '200': + description: User details + content: + application/json: + schema: + $ref: '#/components/schemas/UserEntity' + '403': + description: | + with code * **PERMISSION_DENIED** Not permitted to manage users + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: User not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + deprecated: true + patch: + tags: + - users + summary: Update a user + operationId: Users_updateUserById + security: + - key: [] + - oauth: + - users_manage + requestBody: + $ref: '#/components/requestBodies/JSONPatch' + responses: + '200': + description: Updated user + content: + application/json: + schema: + $ref: '#/components/schemas/UserEntity' + '400': + description: > + with codes + + * **LANGUAGE_DISABLED** Updated language is not available as part of + company subscription plan + + * **INVALID_LOCATION** when one of location properties contains + invalid characters + + * **INVALID_USER_NAME** when firstName or lastName contains invalid + characters (e.g. leading or trailing spaces) + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: | + with code * **PERMISSION_DENIED** Not permitted to access users + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: User not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: > + with codes + + * **RESOURCE_ALREADY_EXIST** when user already exists + + * **SSO_IDENTIFIER_ALREADY_EXISTS** when user with given + ssoIdentifier already exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + deprecated: true + delete: + tags: + - users + summary: Deactivate a user + operationId: Users_deactivateUser + security: + - key: [] + - oauth: + - users_manage + description: >- + Deactivates a User with given Id. Please use `DELETE + /users/{id}/activation` instead. + responses: + '204': + description: User successfully deactivated + '403': + description: | + with code * **PERMISSION_DENIED** Not permitted to manage users + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: User not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + deprecated: true + /users/{id}/reset-password: + parameters: + - $ref: '#/components/parameters/userId' + post: + tags: + - users + summary: Send a password reset email to a user + operationId: Users_sendPasswordResetEmail + security: + - key: [] + - oauth: + - users_manage + description: > + Send password recovery instruction to the email address associated with + a user with a given id. The password will not be reset until the user + with a given id creates a new password. + responses: + '204': + description: The password reset email successfully sent + '400': + description: > + with codes + + * **USER_DISABLED** when user is disabled + + * **USER_LOCKED** when user is locked (after login/password + failures) + + * **USER_EMAIL_INVALID** when user email is invalid + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with codes + + * **PASSWORD_AUTHENTICATION_DISABLED** when user cannot use + login/password authentication + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: User not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /users/{id}/activation-email: + parameters: + - $ref: '#/components/parameters/userId' + post: + tags: + - users + summary: Send an activation email to a user + operationId: Users_sendActivationEmail + security: + - key: [] + - oauth: + - users_manage + description: > + Send an activation email to a user with given id. Users created via an + API are not active. + + This method is an alternative to activating a user directly and allows + sending an activation email + + in which a user will have to open a link and follow instructions on a + screen to activate his/her account. + responses: + '204': + description: Activation email successfully sent + '403': + description: | + with code * **PERMISSION_DENIED** Not permitted to manage users + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: User not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + with codes + + * **ACTIVATION_EMAIL_UNAVAILABLE** when user is already activated or + deactivated. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + deprecated: true + /users/{id}/activation: + parameters: + - $ref: '#/components/parameters/userId' + put: + tags: + - users + summary: Activate a user + operationId: Users_activateUser + security: + - key: [] + - oauth: + - users_manage + description: > + Activate a user with given id. Users created via an API are not active. + + This method allows activating a user so he/she can sign in straight + away. + responses: + '204': + description: User successfully activated + '400': + description: | + with codes + * **PROPERTY_INVALID** when user's property is invalid, e.g. email + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: | + with code * **PERMISSION_DENIED** Not permitted to manage users + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: User not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: > + When activating a previously deactivated user, whilst there is an + active user with the same email. + + There could not be more than one activated user with the same email + in the same time. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + deprecated: true + delete: + tags: + - users + summary: Deactivate a user + operationId: Users_deactivateUserById + security: + - key: [] + - oauth: + - users_manage + responses: + '204': + description: User successfully deactivated + '403': + description: | + with code + * **PERMISSION_DENIED** when user is not permitted to manage users + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: User not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + deprecated: true + /users/{id}/avatar: + parameters: + - $ref: '#/components/parameters/userId' + put: + tags: + - users + summary: Update user avatar + operationId: Users_updateAvatar + security: + - key: [] + - oauth: + - users_manage + requestBody: + content: + multipart/form-data: + schema: + $ref: '#/components/schemas/UsersUpdateAvatarRequest' + responses: + '204': + description: Avatar successfully updated + '400': + description: > + with codes + + * **UNMARSHALLING_ERROR** when request cannot be unmarshalled. + This might be usually caused by missing: + - `boundary` parameter in HTTP Request `Content-Type` header + - `boundary` between parts + - `Content-Disposition` header in at least one part + - `name` parameter in at least one `Content-Disposition` header. + Please check reference: https://tools.ietf.org/html/rfc7578#section-4 + + * **MISSING_FILE_PART** when missing part with name `file` (`file` + is case sensitive) + + * **MISSING_FILE_NAME** when `filename` is not available in `file` + part + + * **MISSING_MEDIA_TYPE** when media type in `Content-Type` header is + not available in `file` part + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: | + with code * **PERMISSION_DENIED** Not permitted to manage users + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: User not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + deprecated: true + /system-roles: + get: + tags: + - users + summary: List system roles + operationId: Users_listSystemRoles + security: + - key: [] + - oauth: + - users_read + responses: + '200': + description: List of system roles + content: + application/json: + schema: + $ref: '#/components/schemas/SystemRoles' + '403': + description: | + with code * **PERMISSION_DENIED** Not permitted to manage users + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /access-groups: + get: + tags: + - users + summary: List access groups configured in your company + operationId: Users_listAccessGroups + security: + - key: [] + - oauth: + - users_read + responses: + '200': + description: List of access groups + content: + application/json: + schema: + $ref: '#/components/schemas/AccessGroups' + '403': + description: > + with code * **PERMISSION_DENIED** Not permitted to manage access + groups + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + externalDocs: + url: >- + https://help.smartrecruiters.com/Company_settings/User_Management/Access_Groups + /access-groups/{accessGroupId}/users/{id}: + parameters: + - $ref: '#/components/parameters/accessGroupId' + - $ref: '#/components/parameters/userId' + delete: + tags: + - users + summary: Remove user from access group + operationId: Users_removeFromAccessGroup + security: + - key: [] + - oauth: + - users_manage + responses: + '204': + description: User successfully removed from access group + '403': + description: > + with code * **PERMISSION_DENIED** Not permitted to manage access + groups + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes + + * **USER_NOT_FOUND** when user with given id doesn't exist + + * **USER_NOT_IN_ACCESS_GROUP** when user is not member of access + group + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /access-groups/{accessGroupId}/users: + parameters: + - $ref: '#/components/parameters/accessGroupId' + post: + tags: + - users + summary: Assign users to access group + operationId: Users_assignToAccessGroup + security: + - key: [] + - oauth: + - users_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserIds' + responses: + '201': + description: Users successfully added to access group + content: + application/json: + schema: + $ref: '#/components/schemas/AccessGroups' + '400': + description: > + Cannot assigned user to access group with codes + + * **ACCESS_GROUP_NOT_ALLOWED_FOR_USER** when access groups are not + allowed for user + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with code * **PERMISSION_DENIED** Not permitted to manage access + groups + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + User or access group not found with codes + + * **USER_NOT_FOUND** when user with given id doesn't exist + + * **ACCESS_GROUP_NOT_FOUND** when access group with given id + doesn't exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /subscriptions: + post: + tags: + - subscriptions + summary: Subscribe to a webhook. + operationId: Subscriptions_subscribeToWebhook + security: + - key: [] + - oauth: + - webhooks_write + - webhooks_manage + description: > + Please be aware that before any event is delivered each subscription + needs to be activated. + + + See [subscription activation](subscriptionsactivate-1). + + + We do limit number of subscriptions each subscriber can register. It + means that: + + + * individual user can register up to 20 subscriptions + + * OAuth application can register up to 20 subscriptions on behalf of a + single user + + + Alerting email address and callback authentication properties are + optional. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SubscriptionRequest' + responses: + '201': + description: Webhook subscription created. + content: + application/json: + schema: + $ref: '#/components/schemas/Subscription' + '400': + description: Invalid request query parameters. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + With codes: + + * **NO_PERMISSION_TO_MANAGE_WEBHOOKS** when no permission to manage + webhook subscriptions + + * **SUBSCRIPTIONS_LIMIT_EXCEEDED** when subscription limit for + subscriber is exceeded + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: >- + Incorrect subscription data. Provided callback URL is invalid or + event name is not found. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + callbacks: + onJobCreated: + $ref: '#/components/callbacks/onJobCreated' + onJobUpdated: + $ref: '#/components/callbacks/onJobUpdated' + onJobStatusUpdated: + $ref: '#/components/callbacks/onJobStatusUpdated' + onJobHiringTeamUpdated: + $ref: '#/components/callbacks/onJobHiringTeamUpdated' + onJobAdCreated: + $ref: '#/components/callbacks/onJobAdCreated' + onJobAdUpdated: + $ref: '#/components/callbacks/onJobAdUpdated' + onJobAdPostingsUpdated: + $ref: '#/components/callbacks/onJobAdPostingsUpdated' + onPositionCreated: + $ref: '#/components/callbacks/onPositionCreated' + onPositionUpdated: + $ref: '#/components/callbacks/onPositionUpdated' + onPositionDeleted: + $ref: '#/components/callbacks/onPositionDeleted' + onApplicationCreated: + $ref: '#/components/callbacks/onApplicationCreated' + onApplicationStatusUpdated: + $ref: '#/components/callbacks/onApplicationStatusUpdated' + onApplicationFieldsUpdated: + $ref: '#/components/callbacks/onApplicationFieldsUpdated' + onApplicationOnboardingStatusUpdated: + $ref: '#/components/callbacks/onApplicationOnboardingStatusUpdated' + onApplicationAttachmentCreated: + $ref: '#/components/callbacks/onApplicationAttachmentCreated' + onApplicationSourceUpdated: + $ref: '#/components/callbacks/onApplicationSourceUpdated' + onCandidateCreated: + $ref: '#/components/callbacks/onCandidateCreated' + onCandidateUpdated: + $ref: '#/components/callbacks/onCandidateUpdated' + onCandidateDeleted: + $ref: '#/components/callbacks/onCandidateDeleted' + onOfferCreated: + $ref: '#/components/callbacks/onOfferCreated' + onOfferUpdated: + $ref: '#/components/callbacks/onOfferUpdated' + onOfferApprovalCreated: + $ref: '#/components/callbacks/onOfferApprovalCreated' + onOfferApprovalApproved: + $ref: '#/components/callbacks/onOfferApprovalApproved' + onOfferApprovalRejected: + $ref: '#/components/callbacks/onOfferApprovalRejected' + onOfferApprovalAbandoned: + $ref: '#/components/callbacks/onOfferApprovalAbandoned' + onOfferApprovalStepApproved: + $ref: '#/components/callbacks/onOfferApprovalStepApproved' + onOfferApprovalStepRejected: + $ref: '#/components/callbacks/onOfferApprovalStepRejected' + onOfferApproverSkipped: + $ref: '#/components/callbacks/onOfferApproverSkipped' + onOfferApproverDelegated: + $ref: '#/components/callbacks/onOfferApproverDelegated' + onOfferApprovalCommentCreated: + $ref: '#/components/callbacks/onOfferApprovalCommentCreated' + onJobApprovalCreated: + $ref: '#/components/callbacks/onJobApprovalCreated' + onJobApprovalApproved: + $ref: '#/components/callbacks/onJobApprovalApproved' + onJobApprovalRejected: + $ref: '#/components/callbacks/onJobApprovalRejected' + onJobApprovalAbandoned: + $ref: '#/components/callbacks/onJobApprovalAbandoned' + onJobApprovalStepApproved: + $ref: '#/components/callbacks/onJobApprovalStepApproved' + onJobApprovalStepRejected: + $ref: '#/components/callbacks/onJobApprovalStepRejected' + onJobApproverSkipped: + $ref: '#/components/callbacks/onJobApproverSkipped' + onJobApproverDelegated: + $ref: '#/components/callbacks/onJobApproverDelegated' + onJobApprovalCommentCreated: + $ref: '#/components/callbacks/onJobApprovalCommentCreated' + onReviewCreated: + $ref: '#/components/callbacks/onReviewCreated' + onReviewUpdated: + $ref: '#/components/callbacks/onReviewUpdated' + onReviewDeleted: + $ref: '#/components/callbacks/onReviewDeleted' + onApplicationScreeningAnswersCreated: + $ref: '#/components/callbacks/onApplicationScreeningAnswersCreated' + onApplicationScreeningAnswersUpdated: + $ref: '#/components/callbacks/onApplicationScreeningAnswersUpdated' + onOnboardingProcessStarted: + $ref: '#/components/callbacks/onOnboardingProcessStarted' + onOnboardingAssignmentsHighPriorityCompleted: + $ref: '#/components/callbacks/onOnboardingAssignmentsHighPriorityCompleted' + onOnboardingAssignmentsCompleted: + $ref: '#/components/callbacks/onOnboardingAssignmentsCompleted' + get: + tags: + - subscriptions + summary: Retrieve webhook subscriptions. + operationId: Subscriptions_getWebhookSubscriptions + security: + - key: [] + - oauth: + - webhooks_read + - webhooks_manage + parameters: + - $ref: '#/components/parameters/pageId' + - $ref: '#/components/parameters/limit' + responses: + '200': + description: List of subscription details. + content: + application/json: + schema: + $ref: '#/components/schemas/Subscriptions' + headers: + Link: + description: >- + Link to next resources is provided in the Link header according + to [RFC8288](https://tools.ietf.org/html/rfc8288). The relation + type is "next". + schema: + type: string + '401': + description: Unauthorized + '403': + description: No permission to see subscriptions + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /subscriptions/{id}: + parameters: + - $ref: '#/components/parameters/subscriptionId' + get: + tags: + - subscriptions + summary: Retrieve single webhook subscription. + operationId: Subscriptions_getSingleWebhook + security: + - key: [] + - oauth: + - webhooks_read + - webhooks_manage + responses: + '200': + description: Subscription details. + content: + application/json: + schema: + $ref: '#/components/schemas/Subscription' + '403': + description: No permission to see this subscription. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + $ref: '#/components/responses/SubscriptionNotFound' + delete: + tags: + - subscriptions + summary: Delete webhook subscription. + operationId: Subscriptions_deleteWebhookSubscription + security: + - key: [] + - oauth: + - webhooks_delete + - webhooks_manage + responses: + '204': + description: Webhook subscription deleted. + '403': + description: No permission to delete webhook subscription. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + $ref: '#/components/responses/SubscriptionNotFound' + /subscriptions/{id}/activation: + parameters: + - $ref: '#/components/parameters/subscriptionId' + put: + tags: + - subscriptions + summary: Activate webhook subscription. + operationId: Subscriptions_activateWebhookSubscription + security: + - key: [] + - oauth: + - webhooks_write + - webhooks_manage + description: > + To ensure that target server is ready to consume notifications, we + require you to implement the initial + + handshake. + + + Having subscription with `callbackUrl`: `https://example.org/hook`, + during activation we will make `POST` + + request with `X-Hook-Secret` header: + + + ``` + + POST https://example.com/hook + + X-Hook-Secret: 4jn8fs9011jj8 + + ``` + + + We expect your server to respond within the time of 20 seconds with HTTP + `200` response containing + + `X-Hook-Secret` header with same value. + + + ``` + + Response 200 + + X-Hook-Secret: 4jn8fs9011jj8 + + ``` + responses: + '204': + description: Subscription activated. + '404': + $ref: '#/components/responses/SubscriptionNotFound' + '409': + description: Subscription already activated. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '424': + description: Webhook activation handshake failed. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /subscriptions/{id}/secret-key: + parameters: + - $ref: '#/components/parameters/subscriptionId' + post: + tags: + - subscriptions + summary: Generate secret key for a webhook subscription. + operationId: Subscriptions_generateSecretKey + security: + - key: [] + - oauth: + - webhooks_write + - webhooks_manage + description: > + We allow you to generate a secret key for the subscription. You can use + it to verify the author of callback messages. When you + + have a secret key already defined - a creation of new one will make old + one deprecated - it will be still active for 24 hours + + though. You can have up to 16 non-expired secret keys. + + + A signature will be included in header `smartrecruiters-signature` of + callback request. Additionally we will send + + `smartrecruiters-timestamp` header with timestamp (seconds) of request. + + + `smartrecruiters-signature` header value has the following format: + + + ``` + + $SIGNATURE_SCHEMA=$SIGNATURE_1;$SIGNATURE_SCHEMA=$SIGNATURE_2... + + ``` + + + As you may notice there may be multiple signatures included in the + header. It can be caused by one or both: + + * having multiple active keys + + * smartrecruiters providing multiple signatures per key with different + signature schemes. We may use it in the + + future to deliver new algorithm of signature creation without breaking + backward compability. + + Every segment of header value is delimited by `;` character + + + Currently, we support and sent following signature + (`$SIGNATURE_SCHEMA`): + + + #### 1) `v1` + + + Signature calculated using HMAC with SHA256 algorithm. Hash should be + calculated from following elements + + concatenated by the `.` character: + * `smartrecruiters-timestamp` header value + * request body + * `event-id` header value + * `event-name` header value + * `event-version` header value + * `link` header value + + Order of this elements is important. In absence of header please use an + empty string as its value. + + + For example assume we have: + + * One active secret key: HeBVky2bccvvkcXPimH8c + + * Callback request: + * headers: + * content-type: application/json + * smartrecruiters-signature: "v1=2e9291f10d44ca10204a4cd81b05d73b6a316b2b605d4e2e0e0b37b40198ce1f" + * smartrecruiters-timestamp = "1574080897" + * event-id = "123" + * link = "; rel=self" + * event-name = "application.created" + * event-version = "v201910" + * body: {"job_id":"jid","candidate_id": "cid"} + + hash should be calculated from value: + + ``` + + 1574080897.{"job_id":"jid","candidate_id":"cid"}.123.application.created.v201910.; + rel=self + + ``` + + + and after using HMAC and SHA256 it should give you hash : + 2e9291f10d44ca10204a4cd81b05d73b6a316b2b605d4e2e0e0b37b40198ce1f, + + + so that `smartrecruiters-signature` header in the callback request will + have value: + + `v1=2e9291f10d44ca10204a4cd81b05d73b6a316b2b605d4e2e0e0b37b40198ce1f` + responses: + '201': + description: Secret key sucessfully generated. + content: + application/json: + schema: + $ref: '#/components/schemas/SecretKeyPayload' + '403': + description: > + With codes: + + * **NO_PERMISSION_TO_MANAGE_WEBHOOKS** when no permission to manage + webhook subscriptions + + * **SECRET_KEYS_LIMIT_EXCEEDED** when secret keys limit for + subscription is exceeded + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + $ref: '#/components/responses/SubscriptionNotFound' + get: + tags: + - subscriptions + summary: Retrieve subscription secret key + operationId: Subscriptions_getSecretKey + security: + - key: [] + - oauth: + - webhooks_read + - webhooks_manage + description: Retrieves the last secret key for webhook subscription. + responses: + '200': + description: Subscription secret key. + content: + application/json: + schema: + $ref: '#/components/schemas/SecretKeyPayload' + '403': + description: No permission to retrieve secret key for webhook subscription. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + $ref: '#/components/responses/SubscriptionNotFound' + /subscriptions/{id}/callbacks-log: + get: + tags: + - subscriptions + summary: Retrieve callback request details starting from newest. + operationId: Subscriptions_getCallbackDetails + security: + - key: [] + - oauth: + - webhooks_read + - webhooks_manage + parameters: + - $ref: '#/components/parameters/subscriptionId' + - $ref: '#/components/parameters/pageId' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/callbackStatus' + - $ref: '#/components/parameters/after' + - $ref: '#/components/parameters/before' + responses: + '200': + description: List of callback request details. + content: + application/json: + schema: + $ref: '#/components/schemas/CallbackRequests' + headers: + Link: + description: >- + Link to next resources is provided in the Link header according + to [RFC8288](https://tools.ietf.org/html/rfc8288). The relation + type is "next". + schema: + type: string +components: + parameters: + candidateId: + description: candidate identifier + in: path + name: id + required: true + schema: + type: string + jobId: + description: job identifier + in: path + name: jobId + required: true + schema: + type: string + attachmentId: + description: attachment identifier + in: path + name: attachmentId + required: true + schema: + type: string + jobPropertyId: + description: job property identifier + in: path + name: id + required: true + schema: + type: string + jobPropertyValueId: + description: job property's value identifier + in: path + name: valueId + required: true + schema: + type: string + jobPropertyDependentId: + description: job property's dependent identifier + in: path + name: dependentId + required: true + schema: + type: string + jobPropertyDependentValueId: + description: job property's dependent value identifier + in: path + name: dependentValueId + required: true + schema: + type: string + candidatePropertyId: + description: candidate property identifier + in: path + name: id + required: true + schema: + type: string + candidatePropertyValueId: + description: candidate property's value identifier + in: path + name: valueId + required: true + schema: + type: string + sourceType: + description: Source type from /configuration/sources + in: path + name: sourceType + required: true + schema: + type: string + sourceValueId: + description: Source id + in: path + name: sourceValueId + required: true + schema: + type: string + sourceSubType: + description: Source SubType from /configuration/sources + in: query + name: sourceSubType + required: false + schema: + type: string + language: + description: language of returned content + in: header + name: Accept-Language + required: false + schema: + description: >- + Language code, can be two-letter for the standard variant or with + additional two letters after a hyphen to identify a specific locale + + + Value "pt-PT" is deprecated and will not work, use "pt" instead. + $ref: '#/components/schemas/LanguageCode' + type: string + default: en + enum: + - af + - am + - ar + - hy + - az + - eu + - bn + - bg + - ca + - zh-CN + - zh-TW + - hr + - cs + - da + - nl + - en-GB + - en + - et + - fi + - fr + - fr-CA + - gl + - ka + - de + - el + - gu + - iw + - hi + - hu + - is + - id + - ga + - it + - ja + - kn + - km + - ko + - lo + - lv + - lt + - ms + - ml + - mr + - mn + - ne + - 'no' + - fa + - fil + - pl + - pt + - pt-BR + - pt-PT + - ro + - ru + - sr + - si + - sk + - sl + - es + - es-MX + - sw + - sv + - ta + - te + - tr + - uk + - ur + - vi + - cy + - zu + sourceIdentifier: + description: Source identifier + in: path + name: sourceIdentifier + required: true + schema: + type: string + format: uuid + minLength: 36 + maxLength: 36 + pageId: + description: identifier of the next page of subscriptions + in: query + name: page_id + required: false + schema: + type: string + pageSize: + description: pageSize + in: query + name: pageSize + required: false + schema: + type: integer + minimum: 1 + maximum: 20000 + ApplicationId: + description: ID of the application + in: query + name: applicationId + required: true + schema: + $ref: '#/components/schemas/Uuid' + InterviewId: + description: ID of the interview + in: path + name: interviewId + required: true + schema: + $ref: '#/components/schemas/Uuid' + TimeslotId: + description: ID of the timeslot + in: path + name: timeslotId + required: true + schema: + $ref: '#/components/schemas/Uuid' + UserId: + description: ID of the user + in: path + name: userId + required: true + schema: + $ref: '#/components/schemas/UserId' + InterviewType: + description: Interview type name + in: path + name: interviewType + required: true + schema: + $ref: '#/components/schemas/InterviewType' + jobAdId: + description: job ad identifier + in: path + name: jobAdId + required: true + schema: + type: string + positionId: + description: position identifier + in: path + name: positionId + required: true + schema: + type: string + JobApplicationId: + description: ID of job application + in: path + name: jobApplicationId + required: true + schema: + $ref: '#/components/schemas/Uuid' + MessageId: + description: identifier of a message + in: path + name: id + required: true + schema: + type: string + CandidateId: + description: identifier of a candidate + in: query + name: candidateId + required: true + schema: + type: string + format: guid + JobId: + description: identifier of a job + in: query + name: jobId + required: false + schema: + type: string + format: guid + PageId: + description: identifier of next page + in: query + name: pageId + required: false + schema: + type: string + Limit: + description: limit + in: query + name: limit + required: false + schema: + type: integer + default: 10 + minimum: 1 + maximum: 100 + ReviewId: + description: ID of the review + in: path + name: reviewId + required: true + schema: + $ref: '#/components/schemas/Uuid' + ReviewerId: + description: ID of the reviewer + in: query + name: reviewerId + required: true + schema: + $ref: '#/components/schemas/UserId' + NewHireId: + description: ID of the New Hire + in: path + name: newHireId + required: true + schema: + $ref: '#/components/schemas/Uuid' + OnboardingProcessId: + description: ID of the Onboarding Process + in: path + name: onboardingProcessId + required: true + schema: + $ref: '#/components/schemas/Uuid' + WebFormAssignmentId: + description: ID of the Web Form Assignment + in: path + name: webFormAssignmentId + required: true + schema: + $ref: '#/components/schemas/Uuid' + FillablePdfFormAssignmentId: + description: ID of the Fillable PDF Form Assignment + in: path + name: fillablePdfFormAssignmentId + required: true + schema: + $ref: '#/components/schemas/Uuid' + ActivityAssignmentId: + description: ID of the Activity Assignment + in: path + name: activityAssignmentId + required: true + schema: + $ref: '#/components/schemas/Uuid' + AttachmentId: + description: ID of the Attachment + in: path + name: attachmentId + required: true + schema: + $ref: '#/components/schemas/Uuid' + userId: + description: user identifier + in: path + name: id + required: true + schema: + type: string + systemRoleId: + description: system role identifier + in: path + name: id + required: true + schema: + type: string + accessGroupId: + description: access group identifier + in: path + name: accessGroupId + required: true + schema: + type: string + eventName: + description: event name + name: event-name + in: header + schema: + $ref: '#/components/schemas/EventName' + required: true + eventVersion: + description: event version + name: event-version + in: header + schema: + type: string + required: true + eventId: + description: event id, remains unchanged during consecutive retried callbacks + name: event-id + in: header + schema: + type: string + required: true + smartrecruitersSignature: + description: >- + callback signature see at [Create + Signature](#subscriptions/subscriptions.generateSecretKey) + name: smartrecruiters-signature + in: header + schema: + type: string + required: false + smartrecruitersTimestamp: + description: >- + timestamp of callback signature see at [Create + Signature](#subscriptions/subscriptions.generateSecretKey) + name: smartrecruiters-timestamp + in: header + schema: + type: number + required: false + Link: + description: >- + Link to entity details is provided in the Link header according to + [RFC8288](https://tools.ietf.org/html/rfc8288). The relation type is + "self". + name: Link + in: header + schema: + type: string + required: true + subscriptionId: + description: subscription identifier + in: path + name: id + required: true + schema: + type: string + limit: + description: number of elements to return + in: query + name: limit + schema: + type: integer + default: 10 + minimum: 1 + maximum: 100 + callbackStatus: + description: status of callback, whan absent all statuses will be returned + in: query + name: callbackStatus + schema: + type: string + enum: + - successful + - failed + after: + description: > + Requests sent after timestamp. Min value is 30 days ago. Format ISO8601: + yyyy-MM-ddTHH:mm:ss.SSSZZ + in: query + name: after + schema: + type: string + format: date-time + before: + description: > + Requests sent before timestamp. Min value is 30 days ago. Format + ISO8601: yyyy-MM-ddTHH:mm:ss.SSSZZ + in: query + name: before + schema: + type: string + format: date-time + responses: + ServerError: + description: Unexpected error + SemanticError: + description: Request body is invalid (e.g. values breaks model definition rules) + content: + application/json: + schema: + $ref: '#/components/schemas/SemanticErrorResponse' + SubscriptionNotFound: + description: Subscription not found. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + CallbackAccepted: + description: > + Your server implementation should return this HTTP status code if the + data was received successfully. + + We expect to get the response within 5 seconds. If we don't get response + during this period, we will + + considered webhook delivary as failed. + schemas: + ApplyApiResponse: + type: object + properties: + id: + type: string + createdOn: + type: string + candidatePortalUrl: + type: string + smartrJoinUrl: + type: string + ApplyApiError: + required: + - code + - id + type: object + properties: + id: + type: string + code: + type: string + enum: + - INVALID_REQUEST + - INVALID_INPUT + - DATA_VALIDATION_ERROR + - RESOURCE_NOT_FOUND_ERROR + - COMPANY_NOT_FOUND_ERROR + - COMPANY_RETRIEVAL_ERROR + - APPLY_API_ERROR + - FILE_UPLOAD_ERROR + - FILE_API_ERROR + - INVALID_API_KEY_ERROR + - UNAUTHORIZED + - REST_CALL_TIMEOUT + - TRAFFIC_LOCKED + message: + type: string + AnswerRecord: + type: object + properties: + fields: + description: >- + Multiple fields may be used for example for questions (Preferred + Work Shifts, Languages, EEO, Currency) + type: array + additionalProperties: + type: array + items: + type: string + items: + $ref: '#/components/schemas/AnswerField' + required: + - fields + ApplyApiRequest: + required: + - email + - firstName + - lastName + type: object + properties: + tags: + type: array + items: + type: string + firstName: + maxLength: 128 + minLength: 0 + type: string + lastName: + maxLength: 128 + minLength: 0 + type: string + email: + maxLength: 128 + minLength: 0 + type: string + createJoinLink: + type: boolean + conditionalsIncluded: + description: > + Specifies whether conditional questions should be returned in the + response. 'false' if not specified + + - Only available for BETA customers + type: boolean + phoneNumber: + maxLength: 128 + minLength: 0 + type: string + location: + $ref: '#/components/schemas/Location' + web: + $ref: '#/components/schemas/Web' + education: + type: array + items: + $ref: '#/components/schemas/Education' + experience: + type: array + items: + $ref: '#/components/schemas/Employment' + sourceDetails: + $ref: '#/components/schemas/SourceDetails' + resume: + $ref: '#/components/schemas/Attachment' + avatar: + $ref: '#/components/schemas/Attachment' + attachments: + type: array + items: + $ref: '#/components/schemas/Attachment' + answers: + type: array + items: + $ref: '#/components/schemas/ScreeningQuestionAnswer' + messageToHiringManager: + maxLength: 4000 + minLength: 0 + type: string + consent: + type: boolean + consentDecisions: + type: object + additionalProperties: + type: boolean + internal: + type: boolean + Attachment: + required: + - id + - actions + type: object + properties: + fileName: + maxLength: 100 + minLength: 0 + type: string + mimeType: + type: string + fileContent: + maxLength: 13981014 + minLength: 1 + type: string + type: + type: string + enum: + - VIDEO_URL + - PDF_URL + - OTHER_URL + url: + type: string + format: uri + id: + type: string + name: + type: string + contentType: + type: string + actions: + type: object + required: + - download + properties: + download: + $ref: '#/components/schemas/Action' + Education: + required: + - degree + - institution + type: object + properties: + description: + maxLength: 4000 + minLength: 0 + type: string + institution: + maxLength: 200 + minLength: 1 + type: string + degree: + maxLength: 200 + minLength: 1 + type: string + major: + maxLength: 200 + minLength: 1 + type: string + current: + type: boolean + startDate: + pattern: \d{4}-\d{2}-\d{2} + type: string + $ref: '#/components/schemas/When' + endDate: + pattern: \d{4}-\d{2}-\d{2} + type: string + $ref: '#/components/schemas/When' + location: + maxLength: 200 + minLength: 0 + type: string + Employment: + required: + - startDate + - title + type: object + properties: + title: + maxLength: 200 + minLength: 0 + type: string + description: + maxLength: 4000 + minLength: 0 + type: string + company: + maxLength: 200 + minLength: 0 + type: string + current: + type: boolean + startDate: + pattern: \d{4}-\d{2}-\d{2} + type: string + endDate: + pattern: \d{4}-\d{2}-\d{2} + type: string + location: + maxLength: 200 + minLength: 0 + type: string + Location: + description: >- + regionCode is not recommended to be used for countries other than the + United States. + type: object + properties: + country: + maxLength: 128 + minLength: 1 + type: string + countryCode: + maxLength: 2 + minLength: 2 + type: string + region: + maxLength: 128 + minLength: 0 + type: string + regionCode: + maxLength: 5 + minLength: 2 + type: string + city: + maxLength: 128 + minLength: 1 + type: string + lat: + maximum: 90 + minimum: -90 + type: number + format: float + lng: + maximum: 180 + minimum: -180 + type: number + format: float + address: + type: string + format: address + postalCode: + type: string + longitude: + type: string + latitude: + type: string + manual: + type: boolean + remote: + type: boolean + required: + - city + - countryCode + ScreeningQuestionAnswer: + required: + - id + - records + type: object + properties: + id: + type: string + records: + type: array + items: + $ref: '#/components/schemas/AnswerRecord' + SourceDetails: + required: + - sourceId + - sourceTypeId + type: object + properties: + sourceTypeId: + type: string + sourceSubTypeId: + type: string + sourceId: + type: string + Web: + type: object + properties: + skype: + maxLength: 100 + minLength: 0 + type: string + linkedIn: + maxLength: 1000 + minLength: 0 + type: string + facebook: + maxLength: 1000 + minLength: 0 + type: string + twitter: + maxLength: 100 + minLength: 0 + type: string + website: + maxLength: 1000 + minLength: 0 + type: string + ApplicationStatusInfo: + type: object + properties: + status: + type: string + enum: + - NEW + - IN_REVIEW + - INTERVIEW + - OFFER + - HIRE + - REJECTED + - WITHDRAWN + - LEAD + - TRANSFERRED + - OTHER + ApplyConfiguration: + required: + - questions + - settings + type: object + properties: + questions: + type: array + items: + $ref: '#/components/schemas/ScreeningQuestion' + settings: + $ref: '#/components/schemas/ApplySettings' + privacyPolicies: + type: array + items: + $ref: '#/components/schemas/PrivacyPolicy' + ApplySettings: + type: object + properties: + avatarUploadAvailable: + type: boolean + FieldValue: + required: + - id + - label + type: object + properties: + id: + type: string + label: + type: string + PrivacyPolicy: + type: object + properties: + url: + type: string + orgName: + type: string + ScreeningQuestion: + required: + - fields + - id + - label + - repeatable + type: object + properties: + id: + type: string + label: + type: string + repeatable: + type: boolean + fields: + type: array + items: + $ref: '#/components/schemas/ScreeningQuestionField' + ScreeningQuestionField: + required: + - id + - label + - required + - type + - values + type: object + properties: + id: + type: string + label: + type: string + type: + type: string + enum: + - INPUT_TEXT + - SINGLE_SELECT + - MULTI_SELECT + - RADIO + - CHECKBOX + - TEXTAREA + - INFORMATION + required: + type: boolean + complianceType: + type: string + enum: + - DIVERSITY + values: + type: array + items: + $ref: '#/components/schemas/FieldValue' + ApprovalRequests: + description: Approval requests + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/ApprovalRequest' + ApprovalRequest: + description: Approval request + type: object + properties: + id: + $ref: '#/components/schemas/ApprovalRequestId' + subject: + $ref: '#/components/schemas/Subject' + type: + $ref: '#/components/schemas/Type' + decisionMode: + $ref: '#/components/schemas/DecisionMode' + status: + description: Status of approval request + type: string + example: APPROVED + enum: + - PENDING + - APPROVED + - REJECTED + - ABANDONED + steps: + type: array + items: + $ref: '#/components/schemas/Step' + approvalRequestId: + type: string + ApprovalRequestId: + description: Approval request id + type: string + Subject: + description: Subject of approval request + type: object + properties: + id: + type: string + type: + type: string + enum: + - job + - offer + Type: + type: string + enum: + - sequential + - parallel + DecisionMode: + type: string + enum: + - any + - all + Step: + description: Required steps to complete approval + type: object + properties: + status: + description: Status of approval step + type: string + example: APPROVED + enum: + - PENDING + - APPROVED + - REJECTED + - SKIPPED + approvers: + description: The order matters when type is `sequential` + type: array + items: + $ref: '#/components/schemas/Approver' + StepInput: + description: Required steps to complete approval + type: object + properties: + approvers: + description: The order matters when type is `sequential` + type: array + minItems: 1 + items: + $ref: '#/components/schemas/ApproverInput' + Approver: + description: Approver + type: object + properties: + id: + description: Approver id + type: string + decision: + description: Decision status for approver + type: string + example: APPROVED + enum: + - PENDING + - APPROVED + - REJECTED + - SKIPPED + decidedOn: + description: Decision date + type: string + format: date-time + ApproverInput: + description: Approver + type: object + properties: + id: + description: Approver id + type: string + Comments: + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/Comment' + Comment: + type: object + properties: + content: + type: string + authorId: + type: string + createdOn: + type: string + format: date-time + ErrorResponse: + type: object + properties: + errors: + type: array + items: + $ref: '#/components/schemas/Error' + message: + type: string + required: + - errors + Error: + type: object + required: + - code + properties: + code: + type: string + message: + type: string + PartnerConfigurationRequest: + required: + - assessmentPackageListUrl + - singleAssessmentPackageUrl + - consentUrl + - consentDisplayMode + - oauthTokenUrl + - supportedAssessmentTypes + type: object + properties: + consentUrl: + description: > + Refers to Partner API: `GET /integration`. SmartRecruiters will add + URL query parameters: + + companyId and redirect (only when `consentDisplayMode=REDIRECT`) + type: string + format: uri + consentDisplayMode: + description: > + REDIRECT: End users will leave SmartRecruiters and be redirected to + the url configured in consentUrl. + + POPUP: End users will remain in SmartRecruiters and see a pop up + widget. + type: string + enum: + - REDIRECT + - POPUP + assessmentPackageListUrl: + description: 'Refers to Partner API: `GET /packages`' + type: string + format: uri + singleAssessmentPackageUrl: + description: 'Refers to Partner API: `GET /packages/{assessmentPackageId}`' + type: string + format: uri + packageOrderUrl: + description: 'Refers to Partner API: `POST /packages/orders`' + type: string + format: uri + inlineAssessmentPackageOrderUrl: + description: 'Refers to Partner API: `POST /packages/inline/orders`' + type: string + format: uri + oauthTokenUrl: + description: >- + Endpoint to exchange the OAuth 2.0 credentials we received from your + service for an access token to your endpoints. + type: string + format: uri + integrationDisableUrl: + description: >- + Refers to Partner API: `DELETE + com/integrations/companies/{companyId}` + type: string + format: uri + fields: + type: array + maxItems: 5 + items: + $ref: '#/components/schemas/Field' + supportedAssessmentTypes: + type: array + minItems: 1 + maxItems: 6 + items: + $ref: '#/components/schemas/AssessmentType' + PartnerConfiguration: + required: + - assessmentPackageListUrl + - singleAssessmentPackageUrl + - consentUrl + - consentDisplayMode + - oauthTokenUrl + - supportedAssessmentTypes + type: object + properties: + consentUrl: + description: >- + Refers to Partner API: GET /integration. SmartRecruiters will add + URL query parameters: companyId and redirect (only when + consentDisplayMode=REDIRECT) + type: string + format: uri + consentDisplayMode: + description: >- + REDIRECT: End users will leave SmartRecruiters and be redirected to + the url configured in consentUrl. POPUP: End users will remain in + SmartRecruiters and see a pop up widget. + type: string + enum: + - REDIRECT + - POPUP + assessmentPackageListUrl: + description: 'Refers to Partner API: GET /packages' + type: string + format: uri + singleAssessmentPackageUrl: + description: 'Refers to Partner API: GET /packages/{assessmentPackageId}' + type: string + format: uri + packageOrderUrl: + description: 'Refers to Partner API: POST /packages/orders' + type: string + format: uri + inlineAssessmentPackageOrderUrl: + description: 'Refers to Partner API: POST /packages/inline/orders' + type: string + format: uri + oauthTokenUrl: + description: >- + Endpoint to exchange the OAuth 2.0 credentials we received from your + service for an access token to your endpoints. + type: string + format: uri + integrationDisableUrl: + description: 'Refers to Partner API: DELETE /integrations/companies/{companyId}' + type: string + format: uri + fields: + type: array + maxItems: 5 + items: + $ref: '#/components/schemas/FieldView' + supportedAssessmentTypes: + type: array + minItems: 1 + maxItems: 6 + items: + $ref: '#/components/schemas/AssessmentType' + FieldView: + type: object + properties: + description: + type: string + id: + type: string + name: + type: string + Field: + required: + - description + - id + - name + type: object + properties: + description: + description: Description saying what is the purpose of this parameter + type: string + id: + description: Id field will be used in the URL as a HTTP request parameter name + type: string + name: + description: User friendly name of the parameter + type: string + ClientCredentials: + required: + - clientId + - clientSecret + type: object + properties: + clientId: + type: string + clientSecret: + type: string + AssessmentResult: + required: + - assessmentId + type: object + properties: + summary: + type: string + assessmentId: + type: string + assessmentDate: + type: string + format: date-time + submissionDate: + type: string + format: date-time + assessmentName: + type: string + score: + $ref: '#/components/schemas/Score' + type: string + scoreLabel: + type: string + attachments: + type: array + items: + $ref: '#/components/schemas/Attachment' + status: + type: string + enum: + - IN_PROGRESS + - PENDING + - COMPLETED + - REJECTED + - EXPIRED + name: + type: string + PackageResult: + type: object + properties: + summary: + description: >- + Will be displayed next to the score and label in the candidate + profile + type: string + description: + description: >- + Not used. To display a short description in the UI, use "summary" + instead + type: string + deprecated: true + assessmentPackageDate: + description: The date when assessments package was sent to the candidate + type: string + format: date-time + submissionDate: + description: The date when assessments package was submitted by the candidate + type: string + format: date-time + name: + type: string + status: + type: string + enum: + - IN_PROGRESS + - PENDING + - COMPLETED + - REJECTED + - EXPIRED + score: + $ref: '#/components/schemas/Score' + scoreLabel: + description: Will be displayed next to the score in the candidate profile + type: string + attachments: + type: array + items: + $ref: '#/components/schemas/Attachment' + assessmentResults: + type: array + items: + $ref: '#/components/schemas/AssessmentResult' + Score: + description: >- + Structural score 'raw' value in a range from min to max - including min + and max. For example, score {raw:28, min:20, max:80} gives a normalized + score of 13%, which users can see in SR UI. The 'raw' value will be + converted to SR UI label '28/80' when min value is not provided. + required: + - max + - min + - raw + type: object + properties: + raw: + description: Score value + type: integer + format: int64 + min: + description: Range lower bound - included + type: integer + format: int64 + max: + description: Range upper bound - included + type: integer + format: int64 + example: >- + {raw:28, min:20, max:80} gives a normalized 13% or label '28/80' (min is + not presented in label) + AttachmentResult: + required: + - url + type: object + properties: + url: + type: string + AssessmentType: + type: string + enum: + - VIDEO_INTERVIEW + - BEHAVIORAL_ASSESSMENT + - BACKGROUND_CHECK + - REFERENCE_CHECK + - SKILL_TEST + - INLINE_ASSESSMENT + Unit: + type: object + Requester: + required: + - email + type: object + properties: + email: + type: string + Assessment: + required: + - description + - id + - type + type: object + properties: + description: + type: string + id: + type: string + type: + $ref: '#/components/schemas/AssessmentType' + name: + type: string + AssessmentPackage: + required: + - assessments + - description + - id + - name + - type + type: object + properties: + description: + type: string + id: + type: string + type: + $ref: '#/components/schemas/AssessmentType' + name: + type: string + assessments: + type: array + items: + $ref: '#/components/schemas/Assessment' + AssessmentPackageOrderRequest: + required: + - assessmentPackageId + - candidate + - companyId + - jobId + - resultCallbackURL + - job + type: object + properties: + resultCallbackURL: + type: string + format: uri + candidate: + $ref: '#/components/schemas/Candidate' + job: + $ref: '#/components/schemas/Job' + requester: + $ref: '#/components/schemas/OrderRequester' + assessmentPackageId: + type: string + jobId: + type: string + deprecated: true + companyId: + type: string + fields: + type: object + additionalProperties: + type: string + example: + partner-field-id: partner-field-value + Candidate: + required: + - id + - internal + - firstName + - lastName + - createdOn + - actions + type: object + properties: + tags: + type: array + items: + type: string + id: + type: string + email: + type: string + firstName: + type: string + lastName: + type: string + applicationLanguage: + type: string + internal: + description: true, if the candidate has at least one internal application + type: boolean + createdOn: + type: string + format: date-time + updatedOn: + type: string + format: date-time + location: + $ref: '#/components/schemas/CandidateLocation' + averageRating: + type: number + deprecated: true + consent: + type: object + properties: + status: + $ref: '#/components/schemas/ConsentStatus' + primaryAssignment: + type: object + required: + - job + - status + properties: + job: + type: object + required: + - id + - title + - actions + properties: + title: + type: string + id: + type: string + actions: + type: object + required: + - details + properties: + details: + $ref: '#/components/schemas/Action' + status: + $ref: '#/components/schemas/CandidateStatusEnum' + subStatus: + type: string + secondaryAssignments: + type: array + items: + type: object + required: + - job + properties: + job: + type: object + required: + - id + - actions + properties: + id: + type: string + actions: + type: object + required: + - details + properties: + details: + $ref: '#/components/schemas/Action' + actions: + type: object + required: + - details + - properties + properties: + details: + $ref: '#/components/schemas/Action' + properties: + $ref: '#/components/schemas/Action' + allOf: + - type: object + required: + - id + properties: + id: + $ref: '#/components/schemas/Uuid' + status: + $ref: '#/components/schemas/CandidateAttendeeStatusValue' + Job: + required: + - id + type: object + properties: + title: + type: string + id: + type: string + format: uuid + job: + type: object + properties: + title: + type: string + id: + type: string + actions: + type: object + required: + - details + properties: + details: + $ref: '#/components/schemas/Action' + positionDetails: + $ref: '#/components/schemas/Action' + refNumber: + type: string + createdOn: + type: string + format: date-time + updatedOn: + description: Job modification date + type: string + format: date-time + lastActivityOn: + description: Indicates last activity associated with a job + type: string + format: date-time + department: + $ref: '#/components/schemas/Department' + location: + $ref: '#/components/schemas/Location' + status: + $ref: '#/components/schemas/JobStatus' + postingStatus: + $ref: '#/components/schemas/PostingStatus' + OrderRequester: + required: + - email + - userId + type: object + properties: + userId: + type: string + email: + type: string + InlineAssessmentPackageOrderRequest: + required: + - assessmentPackageId + - candidate + - companyId + - completedAssessmentCallbackUrl + - jobId + - resultCallbackURL + - job + type: object + properties: + resultCallbackURL: + type: string + format: uri + candidate: + $ref: '#/components/schemas/InlineCandidate' + job: + $ref: '#/components/schemas/InlineJob' + assessmentPackageId: + type: string + jobId: + type: string + deprecated: true + companyId: + type: string + completedAssessmentCallbackUrl: + type: string + fields: + type: object + additionalProperties: + type: string + example: + partner-field-id: partner-field-value + InlineCandidate: + required: + - applicationLanguage + - email + - firstName + - lastName + type: object + properties: + email: + type: string + firstName: + type: string + lastName: + type: string + applicationLanguage: + type: string + InlineJob: + required: + - id + type: object + properties: + id: + type: string + format: uuid + InlineAssessmentPackageResponse: + required: + - assessmentPackageURL + type: object + properties: + url: + description: URL of inline assessment which will be open for candidate + type: string + TokenInput: + type: object + required: + - grant_type + - client_id + - client_secret + properties: + grant_type: + type: string + enum: + - client_credentials + client_id: + type: string + client_secret: + type: string + AccessToken: + type: object + required: + - access_token + - expires_in + properties: + access_token: + type: string + expires_in: + description: >- + Indicates for how many seconds the token will be valid from the + moment it was generated. + type: integer + TokenErrorResponse: + type: object + required: + - error + properties: + error: + type: string + error_description: + type: string + Uuid: + type: string + format: uuid + AssessmentOrder: + type: object + properties: + summary: + type: string + description: + type: string + applicationId: + $ref: '#/components/schemas/Uuid' + orderId: + $ref: '#/components/schemas/Uuid' + assessmentPackageDate: + type: string + format: date-time + submissionDate: + type: string + format: date-time + assessmentPackageName: + type: string + status: + type: string + score: + type: string + scoreLabel: + type: string + attachments: + type: array + items: + $ref: '#/components/schemas/Attachment' + assessments: + type: array + items: + $ref: '#/components/schemas/AssessmentResult' + AssessmentOrders: + type: array + items: + $ref: '#/components/schemas/AssessmentOrder' + Events: + type: object + properties: + nextPageId: + description: Unique identifier for the next page of events + type: string + limit: + description: Number of audit events that were requested + type: integer + content: + type: array + items: + $ref: '#/components/schemas/Event' + EventContext: + type: object + properties: + authenticationType: + type: string + enum: + - PASSWORD + - API_KEY + - WEB_SSO + - AUTH_TOKEN + - SUPPORT_ACCESS + currentRole: + $ref: '#/components/schemas/UserRole' + previousRole: + $ref: '#/components/schemas/UserRole' + officeName: + type: string + Event: + type: object + properties: + version: + type: string + readOnly: true + id: + description: Unique identifier of the event + type: string + eventName: + description: Name of the event + type: string + eventDate: + description: >- + Timestamp when _the thing_ represented by the event actually + happened + type: string + format: date-time + authorType: + description: Type of the author who generated the event + type: string + enum: + - USER + - SUPPORT_USER + - SYSTEM + authorId: + description: Unique identifier of the author + type: string + entityType: + description: Type of the entity that the event is related to + type: string + enum: + - USER + - CANDIDATE + - APPLICATION + - OFFER + - JOB + - COMPANY + - JOB_PROPERTY + - JOB_AD + - CREDENTIAL + - REPORT_FILE + - ONBOARDING_PROCESS + entityId: + description: Unique identifier of the entity that the event is related to + type: string + context: + description: Additional context of event + type: object + $ref: '#/components/schemas/EventContext' + name: + $ref: '#/components/schemas/EventName' + UserRole: + type: string + enum: + - ADMINISTRATOR + - EMPLOYEE + - EXTENDED + - RESTRICTED + - STANDARD + CandidateTags: + type: object + required: + - tags + properties: + tags: + type: array + maxItems: 100 + items: + type: string + maxLength: 50 + OnboardingStatus: + type: object + required: + - onboardingStatus + properties: + onboardingStatus: + type: string + enum: + - READY_TO_ONBOARD + - ONBOARDING_SUCCESSFUL + - ONBOARDING_FAILED + Candidates: + type: object + required: + - limit + - offset + - totalFound + - content + properties: + limit: + type: integer + offset: + type: integer + nextPageId: + type: string + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/Candidate' + PersonalDetails: + type: object + properties: + firstName: + type: string + minLength: 1 + lastName: + type: string + minLength: 1 + email: + type: string + format: email + phoneNumber: + type: string + location: + $ref: '#/components/schemas/CandidateLocation' + web: + $ref: '#/components/schemas/WebProfile' + CandidateInput: + type: object + required: + - firstName + - lastName + - email + properties: + tags: + type: array + items: + type: string + firstName: + type: string + minLength: 1 + lastName: + type: string + minLength: 1 + email: + type: string + format: email + phoneNumber: + type: string + location: + $ref: '#/components/schemas/CandidateLocation' + web: + $ref: '#/components/schemas/WebProfile' + education: + type: array + default: [] + items: + $ref: '#/components/schemas/Education' + experience: + type: array + default: [] + items: + $ref: '#/components/schemas/Experience' + sourceDetails: + $ref: '#/components/schemas/CandidateSource' + internal: + type: boolean + CandidateDetails: + type: object + properties: + tags: + type: array + items: + type: string + id: + type: string + internal: + type: boolean + firstName: + type: string + lastName: + type: string + email: + type: string + phoneNumber: + type: string + location: + $ref: '#/components/schemas/CandidateLocation' + web: + $ref: '#/components/schemas/WebProfile' + createdOn: + type: string + format: date-time + updatedOn: + type: string + format: date-time + averageRating: + type: number + deprecated: true + education: + type: array + items: + $ref: '#/components/schemas/Education' + experience: + type: array + items: + $ref: '#/components/schemas/Experience' + primaryAssignment: + allOf: + - $ref: '#/components/schemas/Job' + - $ref: '#/components/schemas/Assignment' + secondaryAssignments: + type: array + items: + allOf: + - $ref: '#/components/schemas/Job' + - $ref: '#/components/schemas/Assignment' + actions: + type: object + required: + - properties + properties: + properties: + $ref: '#/components/schemas/Action' + attachments: + $ref: '#/components/schemas/Action' + consent: + $ref: '#/components/schemas/Action' + consents: + $ref: '#/components/schemas/Action' + CandidateLocation: + type: object + properties: + country: + type: string + minLength: 1 + countryCode: + type: string + minLength: 2 + maxLength: 2 + regionCode: + type: string + region: + type: string + city: + type: string + minLength: 1 + lat: + type: number + format: float + lng: + type: number + format: float + Attachments: + type: object + required: + - totalFound + - content + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/Attachment' + CandidateAttachmentsForJob: + type: object + required: + - totalFound + - content + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/CandidateAttachmentForJob' + CandidateAttachmentForJob: + type: object + required: + - id + - name + - type + - contentType + properties: + id: + type: string + name: + type: string + type: + type: string + contentType: + type: string + actions: + type: object + required: + - download + - remove + properties: + download: + $ref: '#/components/schemas/Action' + remove: + $ref: '#/components/schemas/Action' + CandidateStatusEnum: + type: string + enum: + - LEAD + - NEW + - IN_REVIEW + - INTERVIEW + - OFFERED + - HIRED + - REJECTED + - WITHDRAWN + - TRANSFERRED + CandidateStatus: + type: object + required: + - status + properties: + status: + $ref: '#/components/schemas/CandidateStatusEnum' + subStatus: + type: string + startsOn: + type: string + format: date-time + reason: + description: >- + id of rejection (GET /configuration/rejection-reasons) or withdrawal + (GET /configuration/withdrawal-reasons) reason. + type: string + CandidateStatusHistoryList: + type: object + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/CandidateStatusHistoryListElem' + CandidateProperties: + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/CandidateProperty' + CandidateProperty: + type: object + required: + - id + - label + - type + - value + - actions + properties: + id: + type: string + label: + type: string + type: + $ref: '#/components/schemas/CandidatePropertyType' + value: + oneOf: + - type: string + - type: boolean + - type: number + - type: object + required: + - code + - value + properties: + code: + type: string + value: + type: number + valueLabel: + description: Label of selected option for SINGLE_SELECT field type + type: string + actions: + type: object + required: + - configuration + properties: + configuration: + $ref: '#/components/schemas/Action' + CandidatePropertyInputValue: + type: object + properties: + value: + description: string, number, boolean or object + Application: + allOf: + - properties: + applicationId: + type: string + - $ref: '#/components/schemas/Assignment' + - $ref: '#/components/schemas/ApplicationUrl' + type: object + properties: + candidateId: + type: string + format: guid + jobId: + type: string + format: guid + Assignment: + type: object + properties: + status: + $ref: '#/components/schemas/CandidateStatusEnum' + subStatus: + type: string + startsOn: + type: string + format: date-time + source: + type: string + reasonOfRejection: + $ref: '#/components/schemas/Property' + reasonOfWithdrawal: + $ref: '#/components/schemas/Property' + actions: + type: object + properties: + sourceDetails: + $ref: '#/components/schemas/Action' + ApplicationUrl: + description: > + url property of a retrieved application represents current location of + its details. Please be aware that the resource location may change in + the future. + type: object + properties: + url: + type: string + Actions: + type: object + additionalProperties: + $ref: '#/components/schemas/Action' + Action: + type: object + required: + - url + - method + properties: + url: + type: string + method: + type: string + enum: + - GET + - POST + - PUT + - PATCH + - OPTIONS + - DELETE + - HEAD + - CONNECT + WebProfile: + type: object + properties: + skype: + type: string + linkedin: + type: string + facebook: + type: string + twitter: + type: string + website: + type: string + Experience: + type: object + properties: + title: + type: string + minLength: 1 + description: + type: string + company: + type: string + minLength: 1 + current: + type: boolean + startDate: + $ref: '#/components/schemas/When' + endDate: + $ref: '#/components/schemas/When' + location: + type: string + CandidateSource: + type: object + required: + - sourceTypeId + - sourceId + properties: + sourceTypeId: + type: string + minLength: 1 + sourceSubTypeId: + type: string + sourceId: + type: string + minLength: 1 + ScreeningAnswers: + type: object + required: + - totalFound + - content + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/ScreeningAnswer' + ScreeningAnswer: + type: object + required: + - id + - type + - category + - name + - label + - records + properties: + id: + description: Id of Question to which answer was responded + type: string + type: + type: string + enum: + - text + - checkbox + - languages + - acknowledgement + - textarea + - select + - files + - info + - eeo + - radio + - salaryExpectation + - currency + - work_shifts + category: + description: | + UUID for custom questions or fixed value for predefined questions: + - eeoInformation + - ofccpDisability + - ofccpVeteransForm + - veteranStatus + - disabilityStatus + - ofccpReasonableAccommodation + - ethnicity + - ethnicGroupsDescriptions + - todaysDate + - yourName + - preferredWorkShifts + - languages + - previousEmployment + - drivingRevoked + - drivingCurrent + - criminalRecord + - workPermit + type: string + name: + description: Question name visible to administrator on questions library list + type: string + label: + description: Question text shown to candidate + type: string + records: + description: >- + Multiple records may be used for example for questions (Preferred + Work Shifts, Languages) + type: array + items: + $ref: '#/components/schemas/AnswerRecord' + AnswerField: + type: object + required: + - id + - values + properties: + id: + type: string + label: + description: Field label shown to candidate - ignore when empty + type: string + values: + description: >- + Multiple values may be used for example for Multiselect Dropdown + question + type: array + items: + $ref: '#/components/schemas/AnswerFieldValue' + AnswerFieldValue: + type: object + required: + - id + - label + properties: + id: + description: Value text or value ID - depends on question definition + type: string + label: + description: Value text shown to candidate + type: string + CandidateStatusHistoryListElem: + type: object + properties: + changedOn: + type: string + format: date-time + status: + $ref: '#/components/schemas/CandidateStatusEnum' + subStatus: + type: string + actions: + $ref: '#/components/schemas/Actions' + CandidatePropertyType: + type: string + enum: + - BOOLEAN + - COUNTRY + - CURRENCY + - DATE + - NUMBER + - PERCENT + - REGION + - TEXT + - USER + - SINGLE_SELECT + CandidateConsentStatus: + type: object + required: + - status + properties: + date: + description: Available when `status` is `ACQUIRED` + type: string + format: date-time + status: + $ref: '#/components/schemas/ConsentStatus' + CandidateConsentDecisions: + type: object + required: + - decisions + properties: + decisions: + type: array + items: + $ref: '#/components/schemas/ConsentDecision' + recentPendingRequestCreatedOn: + type: string + format: date-time + ConsentDecision: + required: + - status + - scope + type: object + properties: + status: + $ref: '#/components/schemas/ConsentDecisionStatus' + scope: + $ref: '#/components/schemas/ConsentScope' + decidedOn: + description: >- + present when candidate has made a consent decision (i.e. `status` is + `acquired` or `declined`) + type: string + format: date-time + ConsentDecisionStatus: + description: | + * **acquired** - a candidate has decided to provide a consent + * **declined** - a candidate has decided to decline a consent + * **required** - a candidate has not made any decision yet, + type: string + enum: + - acquired + - declined + - required + ConsentScope: + description: > + Available when company uses single consent approach: + + * **Single** - a single consent to company privacy policy for all scopes + + Available when company uses separated consent approach: + + * **SmartRecruit** - indicates reading and understanding or accepting + company privacy policy for job applications, + + * **SmartCRM** - a consent to be part of company communities for future + career opportunities, + + * **SmartMessage:SMS** - a consent to receive text/SMS messages for job + applications and/or future career opportunities, + + * **SmartMessage:WhatsApp** - a consent to receive WhatsApp messages for + job applications and/or future career opportunities. + type: string + enum: + - Single + - SmartRecruit + - SmartCRM + - SmartMessage:SMS + - SmartMessage:WhatsApp + ConsentRequest: + type: object + required: + - id + properties: + id: + description: candidate id + type: string + ConsentStatus: + description: | + * **REQUIRED** - no request for consent yet, + * **PENDING** - consent requested, + * **ACQUIRED** - consent provided by a candidate + type: string + enum: + - REQUIRED + - PENDING + - ACQUIRED + ConsentRequestsResults: + type: object + required: + - results + properties: + results: + type: array + items: + oneOf: + - $ref: '#/components/schemas/ConsentRequestScheduled' + - $ref: '#/components/schemas/ConsentRequestUnavailable' + ConsentRequestScheduled: + type: object + required: + - status + - body + properties: + status: + type: integer + enum: + - 202 + body: + type: object + properties: + location: + type: string + ConsentRequestUnavailable: + type: object + required: + - status + properties: + status: + type: integer + enum: + - 403 + body: + type: boolean + enum: + - false + Property: + type: object + required: + - id + properties: + id: + type: string + minLength: 1 + label: + type: string + When: + description: >- + date in YYYY, YYYY-MM or YYYY-MM-dd format, ex. "2016", "2016-11", + "2016-11-29" + type: string + format: when + CandidatePropertyValue: + type: object + required: + - id + properties: + id: + type: string + format: uuid + value: + description: string, number, boolean or object + allOf: + - type: object + properties: + id: + type: string + format: alphanumericAndDash + minLength: 1 + maxLength: 36 + - $ref: '#/components/schemas/CandidatePropertyValueLabel' + Properties: + type: object + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/Property' + CompanyConfiguration: + type: object + properties: + identifier: + description: Identifier of a company. + type: string + name: + description: Company name. + type: string + location: + $ref: '#/components/schemas/Location' + website: + description: URL to company website. + type: string + industry: + $ref: '#/components/schemas/Industry' + logo: + description: URL to company logo. + type: string + JobPropertyDefinitionList: + type: object + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/JobPropertyDefinition' + JobPropertyDefinition: + type: object + required: + - label + - category + - visible + properties: + id: + type: string + label: + type: string + category: + type: string + enum: + - job + - organization + active: + type: boolean + visible: + type: boolean + required: + type: boolean + actions: + $ref: '#/components/schemas/Actions' + JobPropertyDefinitionCreationRequest: + type: object + required: + - label + - category + - visible + properties: + label: + type: string + category: + type: string + enum: + - job + - organization + active: + type: boolean + visible: + type: boolean + required: + type: boolean + JobPropertyValueDefinitionList: + type: object + properties: + totalFound: + type: integer + nextPageId: + type: string + content: + type: array + items: + $ref: '#/components/schemas/JobPropertyValueDefinition' + JobPropertyValueDefinition: + type: object + required: + - label + properties: + id: + type: string + pattern: ^[^/]+$ + minLength: 1 + maxLength: 100 + label: + type: string + minLength: 1 + maxLength: 200 + archived: + type: boolean + DependentJobPropertyValues: + type: object + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/DependentJobPropertyValue' + DependentJobPropertyValue: + allOf: + - $ref: '#/components/schemas/Identifiable' + - $ref: '#/components/schemas/Labeled' + DependentJobProperties: + type: object + required: + - totalFound + - content + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/DependentJobProperty' + DependentJobProperty: + type: object + required: + - id + - label + properties: + id: + type: string + minLength: 1 + maxLength: 100 + label: + type: string + minLength: 1 + maxLength: 200 + DependentJobPropertiesIds: + type: object + required: + - ids + properties: + ids: + type: array + items: + type: string + minLength: 1 + maxLength: 100 + minItems: 1 + DependentJobPropertyValuesRelations: + type: object + required: + - totalFound + - content + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/DependentJobPropertyValuesRelation' + DependentJobPropertyValuesRelation: + type: object + required: + - parent + - values + properties: + parent: + $ref: '#/components/schemas/RelationJobPropertyValue' + values: + type: array + items: + $ref: '#/components/schemas/RelationJobPropertyValue' + RelationJobPropertyValue: + required: + - id + type: object + properties: + id: + type: string + minLength: 1 + label: + type: string + Department: + type: object + required: + - label + properties: + description: + type: string + id: + type: string + label: + type: string + Departments: + type: object + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/Department' + HiringProcesses: + required: + - totalFound + - content + type: object + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/HiringProcess' + HiringProcess: + type: object + properties: + id: + type: string + name: + type: string + active: + type: boolean + subStatuses: + type: object + properties: + IN_REVIEW: + type: array + items: + type: string + INTERVIEW: + type: array + items: + type: string + OFFERED: + type: array + items: + type: string + OfferPropertiesDefinition: + type: object + properties: + categories: + type: array + items: + $ref: '#/components/schemas/OfferPropertiesCategory' + CandidatePropertyDefinitionList: + type: object + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/CandidatePropertyDefinition' + CandidatePropertyDefinition: + type: object + properties: + id: + type: string + label: + type: string + type: + $ref: '#/components/schemas/CandidatePropertyType' + availability: + $ref: '#/components/schemas/CandidatePropertyAvailability' + actions: + $ref: '#/components/schemas/Actions' + CandidatePropertyValueList: + type: object + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/CandidatePropertyValue' + CandidatePropertyValueLabel: + type: object + required: + - label + properties: + label: + type: string + format: value_label + minLength: 1 + maxLength: 1000 + SourceTypes: + type: object + required: + - totalFound + - content + properties: + totalFound: + type: integer + content: + type: array + items: + type: object + required: + - id + - label + - subtypes + - actions + properties: + id: + type: string + label: + type: string + actions: + type: object + required: + - values + properties: + values: + $ref: '#/components/schemas/Action' + subtypes: + type: array + minItems: 1 + items: + $ref: '#/components/schemas/Identifiable' + Sources: + type: object + required: + - totalFound + - limit + - offset + - content + properties: + totalFound: + type: integer + limit: + type: integer + offset: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/Source' + SourceDefinition: + type: object + required: + - label + - type + - subType + properties: + label: + type: string + subType: + $ref: '#/components/schemas/Identifiable' + type: + $ref: '#/components/schemas/Identifiable' + Source: + type: object + required: + - id + - label + - sourceSubType + - actions + properties: + id: + type: string + label: + type: string + sourceSubType: + $ref: '#/components/schemas/Identifiable' + actions: + type: object + required: + - sourceDetails + properties: + sourceDetails: + $ref: '#/components/schemas/Action' + Industry: + description: Company industry information. + type: object + properties: + id: + type: string + label: + type: string + OfferPropertiesCategory: + type: object + properties: + id: + type: string + properties: + type: array + items: + $ref: '#/components/schemas/OfferPropertyDefinition' + OfferPropertyDefinition: + type: object + properties: + key: + type: string + label: + type: string + required: + type: boolean + type: + type: string + enum: + - BOOLEAN + - COUNTRY + - CURRENCY + - DATE + - NUMBER + - PERCENT + - REGION + - TEXT + - USER + - SELECT + CandidatePropertyAvailability: + type: object + properties: + toUsers: + type: string + enum: + - ALL + - FULL_ACCESS + context: + type: array + items: + type: string + enum: + - HIRE_FORM + - OFFER_FORM + - PROFILE + - OFFER_APPROVAL_FORM + forOrgFields: + type: array + items: + $ref: '#/components/schemas/CandidatePropertyFilter' + CandidatePropertyFilter: + type: object + properties: + id: + type: string + values: + $ref: '#/components/schemas/CandidatePropertyFilterValues' + actions: + $ref: '#/components/schemas/Actions' + CandidatePropertyFilterValues: + type: object + properties: + all: + type: boolean + content: + type: array + items: + type: string + LanguageCode: + description: >- + Language code, can be two-letter for the standard variant or with + additional two letters after a hyphen to identify a specific locale + + + Value "pt-PT" is deprecated and will not work, use "pt" instead. + type: string + enum: + - af + - am + - ar + - hy + - az + - eu + - bn + - bg + - ca + - zh-CN + - zh-TW + - hr + - cs + - da + - nl + - en-GB + - en + - et + - fi + - fr + - fr-CA + - gl + - ka + - de + - el + - gu + - iw + - hi + - hu + - is + - id + - ga + - it + - ja + - kn + - km + - ko + - lo + - lv + - lt + - ms + - ml + - mr + - mn + - ne + - 'no' + - fa + - fil + - pl + - pt + - pt-BR + - pt-PT + - ro + - ru + - sr + - si + - sk + - sl + - es + - es-MX + - sw + - sv + - ta + - te + - tr + - uk + - ur + - vi + - cy + - zu + default: en + Identifiable: + type: object + required: + - id + properties: + id: + type: string + minLength: 1 + maxLength: 256 + Labeled: + type: object + required: + - label + properties: + label: + type: string + minLength: 1 + LabelTranslations: + type: array + items: + $ref: '#/components/schemas/LabelTranslation' + LabelTranslation: + type: object + properties: + label: + type: string + minLength: 1 + maxLength: 200 + language: + $ref: '#/components/schemas/LanguageCode' + required: + - label + - language + JSONPatch: + type: array + items: + description: one JSON Patch operation + type: object + allOf: + - description: Members common to all operations + type: object + required: + - op + - path + properties: + path: + $ref: '#/components/schemas/jsonPointer' + - $ref: '#/components/schemas/oneOperation' + oneOf: + - type: object + required: + - op + - value + properties: + op: + type: string + enum: + - add + - replace + - test + value: {} + - type: object + required: + - op + - from + properties: + op: + type: string + enum: + - move + - copy + from: + $ref: '#/components/schemas/jsonPointer' + - type: object + required: + - op + properties: + op: + type: string + enum: + - remove + example: + - path: /path + op: add + value: example + - path: /path + op: move + from: /origin + - path: /path + op: remove + path: + required: + - path + properties: + path: + $ref: '#/components/schemas/jsonPointer' + jsonPointer: + type: string + pattern: ^(/[^/~]*(~[01][^/~]*)*)*$ + FeedBrand: + type: object + properties: + id: + type: string + name: + type: string + logo: + type: string + FeedBudget: + type: object + properties: + price: + type: string + FeedBudgeting: + type: object + properties: + programmatic: + $ref: '#/components/schemas/FeedBudget' + FeedCompany: + type: object + properties: + cid: + type: string + name: + type: string + identifier: + type: string + FeedCompensation: + type: object + properties: + minimum: + type: string + maximum: + type: string + currency: + type: string + FeedDictionaryEntry: + type: object + properties: + id: + type: string + label: + type: string + FeedJobAd: + type: object + properties: + id: + type: string + uuid: + type: string + name: + type: string + refNumber: + type: string + status: + type: string + jobAdUrl: + type: string + liveUrl: + type: string + applyUrl: + type: string + comment: + type: string + postedDate: + type: string + location: + $ref: '#/components/schemas/FeedLocation' + company: + $ref: '#/components/schemas/FeedCompany' + brand: + $ref: '#/components/schemas/FeedBrand' + creator: + $ref: '#/components/schemas/FeedUser' + budget: + $ref: '#/components/schemas/FeedBudgeting' + compensation: + $ref: '#/components/schemas/FeedCompensation' + industry: + $ref: '#/components/schemas/FeedDictionaryEntry' + function: + $ref: '#/components/schemas/FeedDictionaryEntry' + experienceLevel: + $ref: '#/components/schemas/FeedDictionaryEntry' + typeOfEmployment: + $ref: '#/components/schemas/FeedDictionaryEntry' + languageCode: + type: string + jobAd: + $ref: '#/components/schemas/FeedJobAdDetails' + FeedJobAdDetails: + type: object + properties: + companyDescription: + type: string + jobDescription: + type: string + qualifications: + type: string + additionalInformation: + type: string + FeedLocation: + type: object + properties: + city: + type: string + region: + type: string + regionCode: + type: string + country: + type: string + countryCode: + type: string + address: + type: string + zipCode: + type: string + longitude: + type: string + latitude: + type: string + remote: + type: boolean + FeedUser: + type: object + properties: + firstName: + type: string + lastName: + type: string + email: + type: string + FeedPublication: + type: object + properties: + Provider: + type: string + offset: + description: int32 + type: string + limit: + description: int32 + type: string + totalFound: + description: int64 + type: string + jobs: + type: array + items: + $ref: '#/components/schemas/FeedJobAd' + PostingUpdateRequest: + type: object + properties: + liveUrl: + type: string + status: + type: string + comment: + type: string + UserId: + description: Id of a user from User API + type: string + pattern: '[a-fA-F0-9]{24}' + UuidReadOnly: + readOnly: true + type: string + format: guid + InterviewToUpdateInput: + type: object + properties: + location: + type: string + maxLength: 500 + timezone: + description: Name of the timezone as described in TZ database + type: string + maxLength: 100 + candidate: + $ref: '#/components/schemas/AttendeeStatus' + InterviewsList: + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/Interview' + Interview: + type: object + required: + - candidate + - jobId + - organizerId + - timezone + - timeslots + properties: + id: + $ref: '#/components/schemas/UuidReadOnly' + candidate: + $ref: '#/components/schemas/Candidate' + jobId: + $ref: '#/components/schemas/Uuid' + location: + type: string + maxLength: 500 + organizerId: + $ref: '#/components/schemas/UserId' + timezone: + description: Name of the timezone as described in TZ database + type: string + maxLength: 100 + timeslots: + $ref: '#/components/schemas/Timeslots' + createdOn: + description: If not set it defaults to current time + type: string + format: date-time + refUrl: + type: string + format: url + source: + type: string + readOnly: true + Timeslot: + type: object + required: + - startsOn + - endsOn + - interviewers + properties: + title: + type: string + maxLength: 200 + id: + $ref: '#/components/schemas/UuidReadOnly' + interviewType: + $ref: '#/components/schemas/InterviewType' + place: + type: string + maxLength: 500 + startsOn: + type: string + format: date-time + endsOn: + type: string + format: date-time + interviewers: + $ref: '#/components/schemas/Interviewers' + candidateStatus: + $ref: '#/components/schemas/AttendeeStatusValue' + Timeslots: + type: array + minItems: 1 + maxItems: 50 + items: + $ref: '#/components/schemas/Timeslot' + Interviewers: + type: array + minItems: 1 + maxItems: 50 + items: + $ref: '#/components/schemas/Interviewer' + Interviewer: + type: object + required: + - id + - status + properties: + id: + $ref: '#/components/schemas/UserId' + status: + $ref: '#/components/schemas/AttendeeStatusValue' + AttendeeStatusValue: + type: string + enum: + - accepted + - declined + - pending + - tentative + CandidateAttendeeStatusValue: + description: This property is deprecated. Use 'timeslot.candidateStatus' instead. + type: string + nullable: true + enum: + - accepted + - declined + - pending + - tentative + - null + deprecated: true + AttendeeStatus: + type: object + required: + - status + properties: + status: + $ref: '#/components/schemas/AttendeeStatusValue' + InterviewType: + type: string + maxLength: 400 + InterviewTypes: + type: array + minItems: 1 + maxItems: 2000 + items: + $ref: '#/components/schemas/InterviewType' + JobPositions: + type: object + required: + - totalFound + - content + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/JobPosition' + JobPosition: + type: object + required: + - id + properties: + id: + type: string + positionId: + type: string + type: + type: string + incumbentName: + type: string + positionOpenDate: + type: string + format: date-time + targetStartDate: + type: string + format: date-time + status: + type: string + JobPositionInput: + type: object + required: + - type + - positionOpenDate + - targetStartDate + properties: + positionId: + type: string + incumbentName: + type: string + type: + type: string + enum: + - NEW + - REPLACEMENT + positionOpenDate: + type: string + format: date-time + targetStartDate: + type: string + format: date-time + JobAdContent: + type: object + required: + - title + properties: + title: + type: string + format: title + minLength: 1 + language: + $ref: '#/components/schemas/JobAdLanguage' + jobAd: + $ref: '#/components/schemas/JobAdSections' + JobAds: + type: array + items: + $ref: '#/components/schemas/JobAdItem' + JobAdItem: + type: object + required: + - id + - title + - language + - jobAd + - createdOn + - updatedOn + - postingStatus + - default + - actions + - creator + - visibility + properties: + title: + type: string + id: + type: string + language: + $ref: '#/components/schemas/Language' + jobAd: + $ref: '#/components/schemas/JobAdSections' + createdOn: + type: string + format: date-time + updatedOn: + type: string + format: date-time + applyUrl: + type: string + format: url + postingStatus: + type: string + enum: + - PUBLISHED + - NOT_PUBLISHED + default: + type: boolean + actions: + type: object + required: + - postings + properties: + postings: + $ref: '#/components/schemas/Action' + creator: + $ref: '#/components/schemas/Identifiable' + visibility: + type: string + enum: + - PUBLIC + - INTERNAL + - PRIVATE + Publication: + type: object + properties: + aggregators: + type: boolean + default: true + visibility: + type: string + default: PUBLIC + enum: + - PUBLIC + - INTERNAL + JobAdPublicationScheduled: + type: object + properties: + postingStatus: + type: string + enum: + - PENDING + JobAdUnpublishScheduled: + type: object + properties: + unpostingStatus: + type: string + enum: + - PENDING + HeadcountUpdateAccepted: + type: object + properties: + status: + type: string + enum: + - PENDING + HeadcountPatchRequest: + type: object + properties: + salaryRange: + $ref: '#/components/schemas/SalaryRange' + PublicationList: + type: object + required: + - content + properties: + content: + type: array + items: + $ref: '#/components/schemas/PublicationListItem' + HiringTeamMembers: + type: object + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/HiringTeamMemberResponse' + HiringTeamMemberRole: + type: string + enum: + - HIRING_MANAGER + - INTERVIEW_TEAM + - RECRUITER + - EXECUTIVE + - COORDINATOR + HiringTeamMember: + allOf: + - $ref: '#/components/schemas/Identifiable' + - type: object + required: + - role + properties: + role: + anyOf: + - $ref: '#/components/schemas/HiringTeamMemberRole' + - type: string + HiringTeamMemberResponse: + allOf: + - $ref: '#/components/schemas/HiringTeamMember' + - type: object + properties: + actions: + type: object + required: + - details + properties: + details: + $ref: '#/components/schemas/Action' + JobNote: + type: object + required: + - content + properties: + content: + type: string + maxLength: 20000 + JobInput: + type: object + required: + - title + - function + - industry + - experienceLevel + - location + properties: + title: + type: string + minLength: 1 + maxLength: 256 + format: title + refNumber: + type: string + maxLength: 63 + targetHiringDate: + type: string + format: date-time + department: + $ref: '#/components/schemas/Identifiable' + location: + $ref: '#/components/schemas/JobLocationInput' + industry: + $ref: '#/components/schemas/Identifiable' + function: + $ref: '#/components/schemas/Identifiable' + typeOfEmployment: + $ref: '#/components/schemas/Identifiable' + experienceLevel: + $ref: '#/components/schemas/Identifiable' + eeoCategory: + $ref: '#/components/schemas/Identifiable' + template: + type: boolean + compensation: + $ref: '#/components/schemas/Compensation' + jobAd: + $ref: '#/components/schemas/JobAd' + properties: + type: array + items: + $ref: '#/components/schemas/JobPropertyInput' + Jobs: + type: object + properties: + limit: + type: integer + offset: + type: integer + nextPageId: + type: string + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/JobSummary' + JobSummary: + allOf: + - $ref: '#/components/schemas/Job' + - type: object + properties: + language: + $ref: '#/components/schemas/Language' + actions: + type: object + required: + - details + properties: + details: + $ref: '#/components/schemas/Action' + JobDetails: + allOf: + - $ref: '#/components/schemas/Job' + - type: object + properties: + targetHiringDate: + type: string + format: date-time + industry: + $ref: '#/components/schemas/Property' + function: + $ref: '#/components/schemas/Property' + typeOfEmployment: + $ref: '#/components/schemas/Property' + experienceLevel: + $ref: '#/components/schemas/Property' + eeoCategory: + $ref: '#/components/schemas/Property' + template: + type: boolean + creator: + $ref: '#/components/schemas/UserIdentity' + compensation: + $ref: '#/components/schemas/Compensation' + jobAd: + $ref: '#/components/schemas/JobAdInput' + properties: + type: array + items: + $ref: '#/components/schemas/JobProperty' + actions: + type: object + properties: + hiringTeam: + $ref: '#/components/schemas/Action' + publications: + $ref: '#/components/schemas/Action' + positions: + $ref: '#/components/schemas/Action' + applyOnWeb: + $ref: '#/components/schemas/Action' + details: + $ref: '#/components/schemas/Action' + JobLocationInput: + type: object + required: + - city + - countryCode + properties: + countryCode: + type: string + minLength: 2 + maxLength: 2 + regionCode: + type: string + minLength: 1 + maxLength: 256 + region: + type: string + minLength: 1 + maxLength: 256 + address: + type: string + minLength: 1 + maxLength: 2000 + postalCode: + type: string + minLength: 1 + maxLength: 32 + city: + type: string + minLength: 1 + maxLength: 128 + remote: + type: boolean + JobAdInput: + type: object + properties: + sections: + $ref: '#/components/schemas/JobAdSections' + language: + $ref: '#/components/schemas/Language' + JobPropertyInput: + allOf: + - $ref: '#/components/schemas/Identifiable' + - type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/JobPropertyValue' + JobStatusHistory: + type: object + required: + - totalFound + - content + properties: + totalFound: + type: integer + content: + type: array + items: + type: object + required: + - status + properties: + changedOn: + type: string + format: date-time + status: + $ref: '#/components/schemas/JobStatus' + actions: + type: object + required: + - user + properties: + user: + $ref: '#/components/schemas/Action' + JobAdLanguage: + type: object + required: + - code + properties: + code: + $ref: '#/components/schemas/LanguageCode' + JobAdSections: + type: object + properties: + companyDescription: + $ref: '#/components/schemas/JobAdSection' + jobDescription: + $ref: '#/components/schemas/JobAdSection' + qualifications: + $ref: '#/components/schemas/JobAdSection' + additionalInformation: + $ref: '#/components/schemas/JobAdSection' + videos: + $ref: '#/components/schemas/JobAdVideos' + sections: + type: object + properties: + companyDescription: + $ref: '#/components/schemas/JobAdSection' + jobDescription: + $ref: '#/components/schemas/JobAdSection' + qualifications: + $ref: '#/components/schemas/JobAdSection' + additionalInformation: + $ref: '#/components/schemas/JobAdSection' + videos: + $ref: '#/components/schemas/JobAdVideosSection' + JobAdSection: + type: object + properties: + title: + type: string + text: + type: string + maxLength: 24999 + JobAdVideos: + type: object + properties: + urls: + type: array + items: + type: string + format: video_url + PublicationListItem: + type: object + required: + - sourceName + - type + - publishedOn + properties: + sourceName: + type: string + type: + type: string + publishedOn: + type: string + format: date-time + unpublishedOn: + type: string + format: date-time + JobStatusUpdate: + type: object + required: + - status + properties: + status: + $ref: '#/components/schemas/ValidJobStatus' + ValidJobStatus: + type: string + enum: + - CREATED + - SOURCING + - FILLED + - INTERVIEW + - OFFER + - CANCELLED + - ON_HOLD + JobStatus: + type: string + enum: + - CREATED + - SOURCING + - FILLED + - INTERVIEW + - OFFER + - CANCELLED + - ON_HOLD + - OTHER + PostingStatus: + type: string + enum: + - PUBLIC + - INTERNAL + - NOT_PUBLISHED + - PRIVATE + Compensation: + type: object + properties: + min: + type: number + format: double + max: + type: number + format: double + currency: + type: string + JobAd: + type: object + properties: + sections: + $ref: '#/components/schemas/JobAdSections' + language: + $ref: '#/components/schemas/Language' + Language: + type: object + required: + - code + properties: + code: + type: string + label: + type: string + labelNative: + type: string + JobProperty: + type: object + required: + - id + - value + properties: + id: + type: string + minLength: 1 + label: + type: string + value: + $ref: '#/components/schemas/JobPropertyValue' + JobPropertyValue: + type: object + properties: + id: + type: string + minLength: 1 + maxLength: 256 + label: + type: string + UserIdentity: + type: object + properties: + id: + type: string + firstName: + type: string + lastName: + type: string + JobApproval: + type: object + properties: + approvalRequestId: + type: string + positions: + type: array + items: + $ref: '#/components/schemas/JobApprovalPosition' + salaryRange: + $ref: '#/components/schemas/SalaryRange' + SalaryRange: + type: object + properties: + min: + type: number + format: double + max: + type: number + format: double + currency: + type: string + JobApprovalPosition: + type: object + properties: + id: + type: string + positionId: + type: string + type: + type: string + incumbentName: + type: string + positionOpenDate: + type: string + format: date-time + targetStartDate: + type: string + format: date-time + status: + type: string + JobApplication: + type: object + properties: + status: + $ref: '#/components/schemas/JobApplicationStatus' + subStatus: + type: string + sourceIdentifier: + $ref: '#/components/schemas/Uuid' + createDate: + type: string + format: date-time + profileId: + $ref: '#/components/schemas/Uuid' + jobId: + $ref: '#/components/schemas/Uuid' + JobApplicationStatus: + type: string + enum: + - LEAD + - NEW + - IN_REVIEW + - INTERVIEW + - OFFERED + - HIRED + - REJECTED + - WITHDRAWN + - TRANSFERRED + Message: + type: object + required: + - content + properties: + content: + description: Content of the message + type: string + minLength: 1 + maxLength: 10000 + correlationId: + description: >- + CorrelationId is an optional parameter for you to add an additional + ID reference to the note. This will simply be appended onto the note + and will not be tracked/managed/process by SmartRecruiters in any + way. + type: string + shareWith: + $ref: '#/components/schemas/ShareWith' + MessageDetails: + type: object + properties: + id: + type: string + shareRequired: + type: boolean + MessagesView: + type: array + items: + $ref: '#/components/schemas/MessageView' + MessageView: + type: object + properties: + content: + type: string + createdOn: + type: string + format: date-time + visibility: + $ref: '#/components/schemas/Visibility' + authorId: + type: string + context: + $ref: '#/components/schemas/Context' + Context: + type: object + properties: + applications: + $ref: '#/components/schemas/Applications' + Applications: + type: array + items: + $ref: '#/components/schemas/Application' + Visibility: + type: string + enum: + - PUBLIC + - INTERNAL + ShareWith: + description: Sharing and message visibility options + type: object + properties: + users: + description: List of users to share the message with + type: array + items: + type: string + hiringTeamOf: + description: List of jobs to share the message with its hiring teams + type: array + items: + type: string + everyone: + description: Set the message to be visible to everyone in a company + type: boolean + openNote: + description: >- + Set the message to be visible to everyone in a company who has + access to #-tagged candidate + type: boolean + Offers: + type: object + required: + - totalFound + - content + properties: + limit: + type: integer + offset: + type: integer + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/Offer' + Offer: + type: object + required: + - id + - status + - createdOn + - updatedOn + - actions + properties: + id: + type: string + status: + type: string + enum: + - CREATED + - PENDING_APPROVAL + - APPROVED + - NOT_APPROVED + - PENDING_ACCEPTANCE + - ACCEPTED + - NOT_ACCEPTED + - ABANDONED + createdOn: + type: string + format: date-time + updatedOn: + type: string + format: date-time + properties: + type: object + additionalProperties: + type: string + actions: + type: object + required: + - candidate + - details + properties: + candidate: + $ref: '#/components/schemas/Action' + job: + $ref: '#/components/schemas/Action' + details: + $ref: '#/components/schemas/Action' + OfferDocument: + type: object + properties: + id: + description: Id of the document + type: string + format: uuid + name: + description: Name of the document + type: string + createdDate: + description: 'Date when the document was created Format: yyyy-MM-ddTHH:mm:ss.SSSZZ' + type: string + format: date-time + OfferDocumentsList: + type: object + properties: + documents: + type: array + items: + $ref: '#/components/schemas/OfferDocument' + isCurrentlySyncing: + description: >- + Indicates if the documents are currently being synced with the + provider. If true, the documents list may be subject to change. + type: boolean + provider: + description: >- + Name of the provider that the documents are synced with. Currently + only DOCUSIGN is supported. + type: string + enum: + - DOCUSIGN + ApiAssessmentComment: + required: + - message + type: object + properties: + id: + type: string + createDate: + type: string + format: date-time + message: + pattern: .*\S+.* + type: string + messageToCandidate: + pattern: .*\S+.* + type: string + assessmentURL: + type: string + author: + $ref: '#/components/schemas/ApiContactPerson' + ApiContactPerson: + type: object + properties: + firstName: + type: string + lastName: + type: string + email: + type: string + phone: + type: string + ApiCommentRequest: + required: + - message + type: object + properties: + message: + pattern: .*\S+.* + type: string + messageToCandidate: + pattern: .*\S+.* + type: string + assessmentURL: + type: string + author: + $ref: '#/components/schemas/ApiContactPerson' + ApiAssessmentCommentListResult: + type: object + properties: + limit: + type: integer + format: int64 + offset: + type: integer + format: int64 + totalFound: + type: integer + format: int64 + content: + type: array + items: + $ref: '#/components/schemas/ApiAssessmentComment' + ApiAssessmentAttachment: + type: object + properties: + id: + type: string + createDate: + type: string + format: date-time + lastUpdateDate: + type: string + format: date-time + fileName: + type: string + ApiAttachment: + required: + - attachment + type: object + properties: + attachment: + type: string + format: binary + ApiAssessmentAttachmentListResult: + type: object + properties: + limit: + type: integer + format: int64 + offset: + type: integer + format: int64 + totalFound: + type: integer + format: int64 + content: + type: array + items: + $ref: '#/components/schemas/ApiAssessmentAttachment' + ApiAssessmentResult: + required: + - description + - title + type: object + properties: + title: + type: string + description: + type: string + id: + type: string + createDate: + type: string + format: date-time + passed: + type: boolean + score: + type: string + author: + $ref: '#/components/schemas/ApiContactPerson' + result: + type: string + resultType: + type: string + enum: + - DOCUMENT + - VIDEO_STREAM + - VIDEO_URL + - URL + - GENERATED_URL + ApiAssessmentResultListResult: + type: object + properties: + limit: + type: integer + format: int64 + offset: + type: integer + format: int64 + totalFound: + type: integer + format: int64 + content: + type: array + items: + $ref: '#/components/schemas/ApiAssessmentResult' + ApiAssessmentOrder: + required: + - candidate + - company + - job + - offer + - requestor + type: object + properties: + id: + type: string + status: + type: string + enum: + - NEW + - IN_PROGRESS + - REJECTED + - COMPLETED + createDate: + type: string + format: date-time + lastUpdateDate: + type: string + format: date-time + requestor: + $ref: '#/components/schemas/ApiContactPerson' + candidate: + $ref: '#/components/schemas/ApiCandidate' + job: + $ref: '#/components/schemas/ApiJob' + company: + $ref: '#/components/schemas/ApiCompany' + offer: + $ref: '#/components/schemas/ApiOffer' + ApiAvailability: + type: object + properties: + expirationDate: + type: string + format: date-time + industries: + type: array + items: + $ref: '#/components/schemas/ApiIndustry' + locations: + type: array + items: + $ref: '#/components/schemas/ApiLocation' + companies: + type: array + items: + type: string + specialOffer: + type: string + ApiCandidate: + type: object + properties: + id: + type: string + uuid: + type: string + firstName: + type: string + lastName: + type: string + email: + type: string + phone: + type: string + addressLine: + type: string + ApiCompany: + type: object + properties: + id: + type: string + name: + type: string + ApiExperienceLevel: + type: object + properties: + id: + type: string + label: + type: string + ApiFunction: + type: object + properties: + id: + type: string + label: + type: string + ApiIndustry: + type: object + properties: + id: + type: string + label: + type: string + ApiJob: + type: object + properties: + id: + type: string + uuid: + type: string + name: + type: string + industry: + $ref: '#/components/schemas/ApiIndustry' + function: + $ref: '#/components/schemas/ApiFunction' + experienceLevel: + $ref: '#/components/schemas/ApiExperienceLevel' + location: + $ref: '#/components/schemas/ApiLocation' + ApiLocation: + type: object + properties: + country: + type: string + region: + type: string + city: + type: string + ApiOffer: + required: + - catalogId + - description + - name + - terms + type: object + properties: + description: + pattern: .*\S+.* + type: string + id: + type: string + createDate: + type: string + format: date-time + lastUpdateDate: + type: string + format: date-time + catalogId: + pattern: .*\S+.* + type: string + name: + pattern: .*\S+.* + type: string + category: + type: string + terms: + $ref: '#/components/schemas/ApiTerms' + status: + type: string + enum: + - ACTIVE + - INACTIVE + - UNDER_REVIEW + - REJECTED + targetMarket: + $ref: '#/components/schemas/ApiTargetMarket' + availability: + $ref: '#/components/schemas/ApiAvailability' + ApiTargetMarket: + type: object + properties: + industries: + type: array + items: + $ref: '#/components/schemas/ApiIndustry' + functions: + type: array + items: + $ref: '#/components/schemas/ApiFunction' + experienceLevels: + type: array + items: + $ref: '#/components/schemas/ApiExperienceLevel' + locations: + type: array + items: + $ref: '#/components/schemas/ApiLocation' + ApiTerms: + required: + - price + type: object + properties: + type: + type: string + enum: + - REFERENCE_CHECK + - BEHAVIORAL_ASSESSMENT + - BACKGROUND_CHECK + - VIDEO_INTERVIEW + - SKILLS_TEST + - INLINE_ASSESSMENT + price: + $ref: '#/components/schemas/Money' + postingPeriod: + type: integer + format: int32 + costPerClick: + $ref: '#/components/schemas/Money' + existingContract: + type: object + additionalProperties: + type: object + Money: + required: + - amount + type: object + properties: + amount: + minimum: 0 + exclusiveMinimum: false + type: number + currencyCode: + type: string + ApiAssessmentOrderListResult: + type: object + properties: + limit: + type: integer + format: int64 + offset: + type: integer + format: int64 + totalFound: + type: integer + format: int64 + content: + type: array + items: + $ref: '#/components/schemas/ApiAssessmentOrder' + ApiAssessmentOrderRequest: + type: object + properties: + status: + type: string + enum: + - NEW + - IN_PROGRESS + - REJECTED + - COMPLETED + requestor: + $ref: '#/components/schemas/ApiContactPerson' + candidate: + $ref: '#/components/schemas/ApiCandidate' + job: + $ref: '#/components/schemas/ApiJob' + company: + $ref: '#/components/schemas/ApiCompany' + offer: + $ref: '#/components/schemas/ApiOffer' + Config: + required: + - id + type: object + properties: + id: + pattern: .*\S+.* + type: string + value: + type: string + ApiConfigListResult: + type: object + properties: + limit: + type: integer + format: int64 + offset: + type: integer + format: int64 + totalFound: + type: integer + format: int64 + content: + type: array + items: + $ref: '#/components/schemas/Config' + ApiListResult: + type: object + properties: + limit: + type: integer + format: int64 + offset: + type: integer + format: int64 + totalFound: + type: integer + format: int64 + content: + type: array + items: + type: object + ApiListResultApiOffer: + type: object + properties: + limit: + type: integer + format: int64 + offset: + type: integer + format: int64 + totalFound: + type: integer + format: int64 + content: + type: array + items: + $ref: '#/components/schemas/ApiOffer' + PostingList: + type: object + properties: + totalFound: + type: integer + limit: + type: integer + offset: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/PostingItem' + PostingItem: + type: object + properties: + id: + type: string + uuid: + type: string + name: + type: string + jobAdId: + type: string + format: uuid + defaultJobAd: + type: boolean + refNumber: + type: string + company: + $ref: '#/components/schemas/Company' + releasedDate: + type: string + format: date-time + location: + $ref: '#/components/schemas/PostingLocation' + industry: + $ref: '#/components/schemas/Industry' + department: + $ref: '#/components/schemas/Department' + function: + $ref: '#/components/schemas/Function' + typeOfEmployment: + $ref: '#/components/schemas/TypeOfEmployment' + experienceLevel: + $ref: '#/components/schemas/ExperienceLevel' + customField: + type: array + items: + $ref: '#/components/schemas/CustomField' + ref: + type: string + creator: + $ref: '#/components/schemas/Creator' + language: + $ref: '#/components/schemas/Language' + visibility: + $ref: '#/components/schemas/Visibility' + Posting: + type: object + properties: + id: + type: string + uuid: + type: string + name: + type: string + jobId: + type: string + format: uuid + jobAdId: + type: string + format: uuid + defaultJobAd: + type: boolean + applyUrl: + type: string + postingUrl: + type: string + referralUrl: + type: string + refNumber: + type: string + company: + $ref: '#/components/schemas/Company' + releasedDate: + type: string + format: date-time + location: + $ref: '#/components/schemas/PostingLocation' + industry: + $ref: '#/components/schemas/Industry' + department: + $ref: '#/components/schemas/Department' + function: + $ref: '#/components/schemas/Function' + typeOfEmployment: + $ref: '#/components/schemas/TypeOfEmployment' + experienceLevel: + $ref: '#/components/schemas/ExperienceLevel' + customField: + type: array + items: + $ref: '#/components/schemas/CustomField' + ref: + type: string + creator: + $ref: '#/components/schemas/Creator' + jobAd: + $ref: '#/components/schemas/JobAdSections' + active: + type: boolean + visibility: + $ref: '#/components/schemas/Visibility' + Company: + type: object + properties: + identifier: + type: string + name: + type: string + PostingLocation: + type: object + properties: + country: + description: ISO 2-letter country code + type: string + region: + description: >- + This can be state, colloquial name, voivodeship or other area + description + type: string + city: + type: string + remote: + description: Indicates if employees can work remotely + type: boolean + latitude: + type: string + longitude: + type: string + Function: + type: object + properties: + id: + type: string + label: + type: string + TypeOfEmployment: + type: object + properties: + id: + type: string + label: + type: string + ExperienceLevel: + type: object + properties: + id: + type: string + enum: + - associate + - director + - entry_level + - executive + - internship + - mid_senior_level + - not_applicable + name: + type: string + CustomField: + type: object + properties: + fieldId: + type: string + fieldLabel: + type: string + valueId: + type: string + valueLabel: + type: string + Creator: + type: object + properties: + name: + type: string + JobAdLanguageCode: + type: string + enum: + - af + - am + - ar + - az + - bg + - bn + - ca + - cs + - cy + - da + - de + - el + - en + - en-GB + - es + - es-MX + - et + - eu + - fa + - fi + - fil + - fr + - fr-CA + - ga + - gl + - gu + - he + - hi + - hr + - hu + - hy + - id + - is + - it + - ja + - ka + - km + - kn + - ko + - lo + - lt + - lv + - ml + - mn + - mr + - ms + - ne + - nl + - 'no' + - pl + - pt + - pt-BR + - ro + - ru + - si + - sk + - sl + - sr + - sv + - sw + - ta + - te + - tr + - uk + - ur + - vi + - zh-CN + - zh-TW + - zu + JobAdVideosSection: + type: object + properties: + title: + type: string + urls: + type: array + items: + type: string + ApiBooleanValue: + type: object + properties: + value: + type: boolean + ApiColumnResponse: + type: object + properties: + entityTypeId: + type: string + entityInstanceId: + type: string + dataPointId: + type: string + dataPointInstanceId: + type: string + dataPointInstanceName: + type: string + dataPointName: + type: string + dataPointType: + type: string + enum: + - ID + - DATE + - NUMBER + - TEXT + - ENUM + - BOOLEAN + - DECIMAL + ApiDatePeriod: + required: + - period + - unit + type: object + properties: + period: + minimum: 1 + type: integer + format: int32 + unit: + type: string + enum: + - DAYS + - WEEKS + - MONTHS + - YEARS + fullPeriod: + type: boolean + ApiDateRange: + type: object + properties: + from: + type: string + format: date-time + to: + type: string + format: date-time + ApiFilterResponse: + type: object + properties: + column: + $ref: '#/components/schemas/ApiColumnResponse' + dateRange: + $ref: '#/components/schemas/ApiDateRange' + datePeriod: + $ref: '#/components/schemas/ApiDatePeriod' + rowValues: + $ref: '#/components/schemas/ApiRowValues' + booleanValue: + $ref: '#/components/schemas/ApiBooleanValue' + ApiReportFileResponse: + type: object + properties: + reportFileId: + type: string + reportId: + type: string + reportFileStatus: + type: string + enum: + - PENDING + - RUNNING + - COMPLETED + - FAILED + scheduleType: + type: string + enum: + - AD_HOC + - SCHEDULED + schedulingDate: + type: string + format: date-time + generationDate: + type: string + format: date-time + requestorId: + type: string + accessGroupId: + type: string + systemRoleId: + type: string + rowEntityTypeId: + type: string + rowEntityInstanceId: + type: string + columns: + type: array + items: + $ref: '#/components/schemas/ApiColumnResponse' + filters: + type: array + items: + $ref: '#/components/schemas/ApiFilterResponse' + errorReason: + type: string + enum: + - UNKNOWN + - MISSING_ACCESS_GROUP + - ACCESS_GROUP_MISMATCH + - MISSING_SYSTEM_ROLE + - SYSTEM_ROLE_MISMATCH + - REPORTING_AREA_RESTRICTED + - INCORRECT_ACCESS_CONFIGURATION + - MISSING_REPORT_CREATOR_EMPLOYEE + ApiRowValues: + required: + - values + type: object + properties: + noneValue: + type: boolean + values: + maxItems: 100 + minItems: 0 + type: array + items: + maxLength: 256 + minLength: 1 + type: string + ApiReportResponse: + type: object + properties: + reportId: + type: string + name: + type: string + rowEntityTypeId: + type: string + rowEntityInstanceId: + type: string + columns: + type: array + items: + $ref: '#/components/schemas/ApiColumnResponse' + filters: + type: array + items: + $ref: '#/components/schemas/ApiFilterResponse' + creationDate: + type: string + format: date-time + modificationDate: + type: string + format: date-time + creatorId: + type: string + modifierId: + type: string + grantees: + uniqueItems: true + type: array + items: + type: string + schedule: + $ref: '#/components/schemas/ApiSchedule' + reportTemplateId: + type: string + reportFormats: + uniqueItems: true + type: array + items: + type: string + enum: + - CSV + - EXCEL + accessGroupId: + type: string + systemRoleId: + type: string + ApiSchedule: + required: + - activityPeriod + - frequency + type: object + properties: + frequency: + type: string + enum: + - ANNUALLY + - MONTHLY + - WEEKLY + - DAILY + activityPeriod: + $ref: '#/components/schemas/ApiDateRange' + schedulingTime: + $ref: '#/components/schemas/ApiTimeRange' + ApiTime: + type: object + properties: + hour: + maximum: 23 + minimum: 0 + type: integer + format: int32 + minute: + maximum: 59 + minimum: 0 + type: integer + format: int32 + ApiTimeRange: + required: + - from + - to + type: object + properties: + from: + $ref: '#/components/schemas/ApiTime' + to: + $ref: '#/components/schemas/ApiTime' + zone: + type: string + ApiReportFilesResponse: + type: object + properties: + nextPage: + type: string + content: + type: array + items: + $ref: '#/components/schemas/ApiReportFileResponse' + ApiReportsResponse: + type: object + properties: + nextPage: + type: string + content: + type: array + items: + $ref: '#/components/schemas/ApiReportResponse' + Review: + type: object + properties: + id: + readOnly: true + $ref: '#/components/schemas/Uuid' + candidateId: + $ref: '#/components/schemas/Uuid' + jobId: + $ref: '#/components/schemas/Uuid' + reviewerId: + $ref: '#/components/schemas/UserId' + overallRating: + type: integer + comment: + type: string + createdOn: + type: string + format: date-time + updatedOn: + type: string + format: date-time + ReviewInput: + type: object + required: + - candidateId + - jobId + - overallRating + properties: + reviewerId: + $ref: '#/components/schemas/UserId' + candidateId: + $ref: '#/components/schemas/Uuid' + jobId: + $ref: '#/components/schemas/Uuid' + overallRating: + type: integer + minimum: 1 + maximum: 5 + comment: + type: string + createdOn: + type: string + format: date-time + ReviewToUpdateInput: + type: object + required: + - reviewerId + properties: + overallRating: + type: integer + minimum: 1 + maximum: 5 + comment: + type: string + reviewerId: + $ref: '#/components/schemas/UserId' + ActivityAssignmentAttachments: + type: object + required: + - attachmentIds + properties: + attachmentIds: + type: array + items: + $ref: '#/components/schemas/Uuid' + Assignments: + type: object + required: + - activityAssignments + - webFormAssignments + - fillablePdfFormAssignments + properties: + activityAssignments: + type: array + items: + $ref: '#/components/schemas/ActivityAssignment' + webFormAssignments: + type: array + items: + $ref: '#/components/schemas/WebFormAssignment' + fillablePdfFormAssignments: + type: array + items: + $ref: '#/components/schemas/FillablePdfFormAssignment' + ActivityAssignment: + type: object + required: + - id + - title + - description + - isFileUploadRequired + - hasSensitiveData + - isHighPriority + properties: + title: + type: string + description: + type: string + id: + $ref: '#/components/schemas/Uuid' + isFileUploadRequired: + type: boolean + hasSensitiveData: + type: boolean + isHighPriority: + type: boolean + WebFormAssignment: + type: object + required: + - id + - title + - description + - hasSensitiveData + - isHighPriority + properties: + title: + type: string + description: + type: string + id: + $ref: '#/components/schemas/Uuid' + hasSensitiveData: + type: boolean + isHighPriority: + type: boolean + FillablePdfFormAssignment: + type: object + required: + - id + - title + - description + - hasSensitiveData + - isHighPriority + - fileName + properties: + title: + type: string + description: + type: string + id: + $ref: '#/components/schemas/Uuid' + hasSensitiveData: + type: boolean + isHighPriority: + type: boolean + fileName: + type: string + WebFormFieldsMetadata: + type: object + required: + - fields + properties: + fields: + type: object + additionalProperties: + $ref: '#/components/schemas/WebFormFieldMetadata' + WebFormFieldMetadata: + type: object + required: + - type + - title + - isRequired + properties: + title: + type: string + type: + type: string + integrationKey: + type: string + hintText: + type: string + isRequired: + type: boolean + WebFormAnswers: + type: object + required: + - answers + properties: + answers: + $ref: '#/components/schemas/WebFormAnswer' + WebFormAnswer: + type: object + required: + - fieldId + - answerValue + properties: + fieldId: + type: string + integrationKey: + type: string + answerValue: + type: array + items: + type: string + NewHire: + type: object + required: + - id + - firstName + - lastName + - email + - socialMedia + properties: + id: + $ref: '#/components/schemas/Uuid' + firstName: + type: string + lastName: + type: string + email: + type: string + phone: + type: string + socialMedia: + $ref: '#/components/schemas/SocialMedia' + SocialMedia: + type: object + properties: + skype: + type: string + linkedIn: + type: string + facebook: + type: string + twitter: + type: string + website: + type: string + indeed: + type: string + OnboardingProcess: + type: object + required: + - id + - newHireId + - jobId + - applicationId + properties: + id: + $ref: '#/components/schemas/Uuid' + newHireId: + $ref: '#/components/schemas/Uuid' + employmentStartDate: + type: string + format: date + jobId: + $ref: '#/components/schemas/Uuid' + applicationId: + $ref: '#/components/schemas/Uuid' + SemanticErrorResponse: + type: object + properties: + message: + type: string + errors: + type: array + items: + $ref: '#/components/schemas/SemanticError' + SemanticError: + type: object + required: + - dataPath + - message + properties: + dataPath: + type: string + message: + type: string + LocationUpdateRequest: + description: >- + regionCode is not recommended to be used for countries other than the + United States. + type: object + properties: + countryCode: + type: string + minLength: 2 + maxLength: 2 + regionCode: + type: string + city: + type: string + minLength: 1 + address: + type: string + format: address + postalCode: + type: string + required: + - city + - countryCode + UserLanguageCode: + description: >- + Language assigned to user account. Language code, can be two-letter for + the standard variant or with additional two letters after a hyphen to + identify a specific locale + type: string + enum: + - bg + - cs + - da + - de + - el + - en + - es + - es-MX + - fi + - fr + - fr-CA + - hr + - hu + - id + - it + - ja + - lt + - nl + - 'no' + - pl + - pt + - pt-BR + - ro + - ru + - sk + - sl + - sr + - sv + - th + - tr + - uk + - vi + - zh-CN + - zh-TW + - ka + Users: + type: object + properties: + limit: + type: integer + nextPageId: + type: string + content: + type: array + items: + $ref: '#/components/schemas/UserListItem' + totalFound: + type: integer + offset: + type: integer + UserListItem: + allOf: + - $ref: '#/components/schemas/User' + - type: object + required: + - language + properties: + id: + type: string + active: + type: boolean + updatedOn: + type: string + format: date-time + User: + type: object + required: + - firstName + - lastName + - role + properties: + email: + type: string + format: email + firstName: + type: string + minLength: 1 + maxLength: 300 + format: name + lastName: + type: string + minLength: 1 + maxLength: 300 + format: name + systemRole: + $ref: '#/components/schemas/SystemRole' + externalData: + type: string + nullable: true + ssoIdentifier: + type: string + nullable: true + ssoLoginMode: + description: >- + User level login mode setting. Possible values are: + + - SSO - user can login only through SSO + + - PASSWORD - user can login only by password + + + Notice: This setting _CAN_ be configured always, but it will be + respected only if: + + - SSO is enabled at company level + + - employee level SSO configuration functionality is enabled for + company + nullable: true + type: string + enum: + - SSO + - PASSWORD + language: + type: object + required: + - code + properties: + code: + $ref: '#/components/schemas/UserLanguageCode' + role: + type: string + enum: + - EMPLOYEE + - RESTRICTED + - STANDARD + - EXTENDED + - ADMINISTRATOR + UserEntity: + allOf: + - required: + - language + - $ref: '#/components/schemas/User' + - type: object + properties: + id: + type: string + active: + type: boolean + updatedOn: + type: string + format: date-time + location: + $ref: '#/components/schemas/Location' + NewUser: + allOf: + - $ref: '#/components/schemas/User' + - type: object + properties: + ssoIdentifier: + type: string + maxLength: 100 + writeOnly: true + password: + type: string + writeOnly: true + location: + $ref: '#/components/schemas/LocationUpdateRequest' + SystemRoles: + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/SystemRole' + SystemRole: + type: object + required: + - id + properties: + id: + type: string + name: + type: string + AccessGroup: + type: object + properties: + id: + type: string + name: + type: string + AccessGroups: + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/AccessGroup' + UserIds: + type: array + maxItems: 5000 + items: + $ref: '#/components/schemas/UserId' + Seats: + description: >- + List of seat keys. Available values: smartPal, crm, recruitingAI, + textMessaging + type: array + items: + type: string + AnyValue: + anyOf: + - type: string + - type: number + - type: integer + - type: boolean + - type: array + items: {} + - type: object + add: + description: add operation. Value can be any JSON value. + properties: + op: + enum: + - add + type: string + value: + $ref: '#/components/schemas/AnyValue' + required: + - value + remove: + description: remove operation. Only a path is specified. + properties: + op: + enum: + - remove + type: string + replace: + description: replace operation. Value can be any JSON value. + properties: + op: + enum: + - replace + type: string + value: + $ref: '#/components/schemas/AnyValue' + required: + - value + move: + description: move operation. "from" is a JSON Pointer. + properties: + op: + enum: + - move + type: string + from: + $ref: '#/components/schemas/jsonPointer' + required: + - from + copy: + description: copy operation. "from" is a JSON Pointer. + properties: + op: + enum: + - copy + type: string + from: + $ref: '#/components/schemas/jsonPointer' + required: + - from + test: + description: test operation. Value can be any JSON value. + properties: + op: + enum: + - test + type: string + value: + $ref: '#/components/schemas/AnyValue' + required: + - value + oneOperation: + oneOf: + - $ref: '#/components/schemas/add' + - $ref: '#/components/schemas/remove' + - $ref: '#/components/schemas/replace' + - $ref: '#/components/schemas/move' + - $ref: '#/components/schemas/copy' + - $ref: '#/components/schemas/test' + JobWebhookPayload: + type: object + required: + - id + properties: + id: + type: string + JobAdWebhookPayload: + type: object + required: + - job_id + - job_ad_id + properties: + job_id: + type: string + job_ad_id: + type: string + JobAdPostingsWebhookPayload: + type: object + required: + - job_id + - job_ad_id + properties: + job_id: + type: string + job_ad_id: + type: string + PositionWebhookPayload: + type: object + required: + - job_id + - position_id + properties: + job_id: + type: string + position_id: + type: string + ApplicationWebhookPayload: + type: object + required: + - job_id + - candidate_id + - application_id + properties: + job_id: + type: string + candidate_id: + type: string + application_id: + type: string + ApplicationAttachmentWebhookPayload: + allOf: + - $ref: '#/components/schemas/ApplicationWebhookPayload' + - type: object + required: + - attachment_id + properties: + attachment_id: + type: string + CandidateWebhookPayload: + type: object + required: + - id + properties: + id: + type: string + OfferWebhookPayload: + type: object + required: + - job_id + - candidate_id + - offer_id + properties: + job_id: + type: string + candidate_id: + type: string + offer_id: + type: string + OfferApprovalWebhookPayload: + type: object + required: + - approval_id + - job_id + - candidate_id + - offer_id + properties: + approval_id: + type: string + job_id: + type: string + candidate_id: + type: string + offer_id: + type: string + JobApprovalWebhookPayload: + type: object + required: + - approval_id + - job_id + properties: + approval_id: + type: string + job_id: + type: string + SecretKeyPayload: + type: object + properties: + secretKey: + type: string + Subscriptions: + type: array + items: + $ref: '#/components/schemas/Subscription' + CallbackRequests: + type: array + items: + $ref: '#/components/schemas/CallbackRequest' + CallbackUrl: + type: string + format: https_url + example: https://server.com/send/callback/here + EmailAddress: + type: string + format: email + example: webhook.alerts@domain.com + CallbackAuthentication: + type: object + oneOf: + - $ref: '#/components/schemas/CallbackBasicAuth' + - $ref: '#/components/schemas/CallbackHeaderAuth' + - $ref: '#/components/schemas/CallbackOAuth2Auth' + example: + type: header + headerName: X-TOKEN + headerValue: J?7HSgUKm7!MPm+EKm^P4BwW4ywRRRVu + CallbackBasicAuth: + type: object + properties: + type: + type: string + enum: + - basic + username: + type: string + password: + type: string + example: + type: basic + username: basic-user + password: jVG8wzKZ%B+r_NkA + CallbackHeaderAuth: + type: object + properties: + type: + type: string + enum: + - header + headerName: + description: Custom header name starting with "x-" + type: string + pattern: ^[Xx]- + headerValue: + type: string + example: + type: header + username: token + password: J?7HSgUKm7!MPm+EKm^P4BwW4ywRRRVu + CallbackOAuth2Auth: + description: > + When `CallbackAuthentication` is set to `oauth2`, every call made to the + webhook callback url will incude header + + + `'authorization': Bearer access_token_value` + type: object + properties: + type: + type: string + enum: + - oauth2 + clientId: + description: OAuth2 client id used for token request + type: string + clientSecret: + description: OAuth2 client secret used for token request + type: string + tokenServiceUrl: + description: > + OAuth2 token service url. This serivce is expected to consume + `application/x-www-form-urlencoded` content + + type. The payload will consist of + + + `client_id=provided_client_id&client_secret=provided_client_secret&grant_type=client_credentials` + + + As a result, the service should return json containing information + about access token in form: + + + ``` + + { + access_token: 'access_token_value', + expires_in: 'amount_of_miliseconds' + } + + ```` + type: string + format: https_url + example: + type: oauth2 + clientId: oauth_client_123 + clientSecret: 9T{Z8OLl<~Si(=c + tokenServiceUrl: https://www.your-token-generator-service.com/tokens + Subscription: + type: object + properties: + id: + type: string + readOnly: true + callbackUrl: + $ref: '#/components/schemas/CallbackUrl' + events: + type: array + items: + $ref: '#/components/schemas/Event' + status: + type: string + readOnly: true + enum: + - inactive + - active + required: + - callbackUrl + - events + CallbackRequest: + type: object + properties: + status: + $ref: '#/components/schemas/CallbackRequestStatus' + timestamp: + description: > + Requests sent before timestamp. Format ISO8601: + yyyy-MM-ddTHH:mm:ss.SSSZZ + type: string + format: date-time + requestDetails: + description: details of callback request + type: object + properties: + url: + description: url to which callback was sent + type: string + body: + description: body of the request in form of stringified json. + type: string + headers: + description: headers set for the request + type: object + CallbackRequestStatus: + type: string + enum: + - successful + - failed + SubscriptionRequest: + type: object + properties: + callbackUrl: + $ref: '#/components/schemas/CallbackUrl' + events: + type: array + uniqueItems: true + minItems: 1 + items: + $ref: '#/components/schemas/EventName' + alertingEmailAddress: + $ref: '#/components/schemas/EmailAddress' + callbackAuthentication: + $ref: '#/components/schemas/CallbackAuthentication' + required: + - callbackUrl + - events + EventName: + type: string + enum: + - job.created + - job.updated + - job.status.updated + - job.hiring-team.updated + - job.ad.created + - job.ad.updated + - job.ad.postings.updated + - position.created + - position.updated + - position.deleted + - application.created + - application.status.updated + - application.fields.updated + - application.onboarding-status.updated + - application.attachment.created + - application.source.updated + - candidate.created + - candidate.updated + - candidate.deleted + - offer.created + - offer.updated + - offer.approval.created + - offer.approval.approved + - offer.approval.rejected + - offer.approval.abandoned + - offer.approval.step.approved + - offer.approval.step.rejected + - offer.approver.skipped + - offer.approver.delegated + - offer.approval.comment.created + - job.approval.created + - job.approval.approved + - job.approval.rejected + - job.approval.abandoned + - job.approval.step.approved + - job.approval.step.rejected + - job.approver.skipped + - job.approver.delegated + - job.approval.comment.created + - review.created + - review.updated + - review.deleted + - application.screening-answers.created + - application.screening-answers.updated + - onboarding.process.started + - onboarding.assignments.high-priority.completed + - onboarding.assignments.completed + ReviewWebhookPayload: + type: object + required: + - application_id + - review_id + properties: + application_id: + type: string + review_id: + type: string + ScreeningQuestionsAnswersWebhookPayload: + type: object + required: + - job_id + - candidate_id + - application_id + properties: + job_id: + type: string + candidate_id: + type: string + application_id: + type: string + OnboardingProcessWebhookPayload: + type: object + required: + - onboarding_process_id + - new_hire_id + properties: + onboarding_process_id: + type: string + new_hire_id: + type: string + OnboardingHighPriorityAssignmentsCompletedWebhookPayload: + type: object + required: + - onboarding_process_id + - new_hire_id + properties: + onboarding_process_id: + type: string + new_hire_id: + type: string + OnboardingAssignmentsCompletedWebhookPayload: + type: object + required: + - onboarding_process_id + - new_hire_id + properties: + onboarding_process_id: + type: string + new_hire_id: + type: string + ApprovalsAddCommentToRequestRequest: + type: object + required: + - content + - authorId + properties: + content: + type: string + maxLength: 10000 + authorId: + type: string + ApprovalsCreateApprovalRequestRequest: + type: object + required: + - baseId + - type + - decisionMode + - steps + properties: + baseId: + $ref: '#/components/schemas/ApprovalRequestId' + type: + $ref: '#/components/schemas/Type' + decisionMode: + $ref: '#/components/schemas/DecisionMode' + steps: + description: Steps to complete approval + type: array + minItems: 1 + items: + $ref: '#/components/schemas/StepInput' + ApprovalsApproveDecisionsRequest: + type: object + required: + - approverId + properties: + approverId: + type: string + ApprovalsRejectRequestByIdRequest: + type: object + required: + - approverId + - comment + properties: + approverId: + type: string + comment: + type: string + ResultAddAttachmentToOrderRequest: + type: string + CandidatesParseResumeAndAssignToTalentPoolRequest: + type: object + properties: + sourceTypeId: + description: Candidate Source type id + type: string + sourceSubTypeId: + description: Candidate Source subtype id + type: string + sourceId: + description: Candidate Source id + type: string + internal: + description: Mark as company employee + type: boolean + file: + description: The resume file to parse. + type: string + format: binary + CandidatesRequestConsentFromMultipleRequest: + type: object + required: + - content + properties: + content: + type: array + minItems: 1 + maxItems: 1000 + items: + $ref: '#/components/schemas/ConsentRequest' + CandidatesAttachFilesRequest: + type: object + properties: + attachmentType: + description: Type of attachment you want to upload. + type: string + enum: + - GENERIC_FILE + - RESUME + - COVER_LETTER + default: GENERIC_FILE + file: + description: The file to upload. + type: string + format: binary + required: + - attachmentType + CandidatesAttachFileToJobCandidateRequest: + type: object + properties: + attachmentType: + description: Type of attachment you want to upload. + type: string + enum: + - GENERIC_FILE + - RESUME + - COVER_LETTER + default: GENERIC_FILE + file: + description: File to upload. + type: string + format: binary + required: + - attachmentType + CandidatesUpdateCandidatePropertiesRequest: + type: array + minItems: 1 + maxItems: 100 + items: + $ref: '#/components/schemas/CandidatePropertyValue' + UsersUpdateAvatarRequest: + type: object + properties: + file: + description: The file to upload. + type: string + format: binary + required: + - file + IntegrationShowConsentFormOnPartnerSideResponse: + type: string + IntegrationRemoveIntegrationOnPartnerSideResponse: + type: object + properties: {} + example: {} + PackagesGetListResponse: + type: array + items: + $ref: '#/components/schemas/AssessmentPackage' + OrdersAssessPackageForCandidateResponse: + type: object + properties: {} + example: {} + OffersGetDocumentResponse: + format: binary + FilesDownloadReportDataResponse: + type: string + ReportsDownloadRecentFileResponse: + type: string + ReviewsGetAllForCandidateJobResponse: + type: array + items: + $ref: '#/components/schemas/Review' + AssignmentssubmissionsGetFormAnswersResponse: + type: string + format: binary + AssignmentssubmissionsGetSingleAttachmentResponse: + type: string + format: binary + securitySchemes: + key: + type: apiKey + name: x-smarttoken + in: header + oauth: + type: oauth2 + flows: + authorizationCode: + authorizationUrl: https://www.smartrecruiters.com/identity/oauth/allow + tokenUrl: https://api.smartrecruiters.com/identity/oauth/token + scopes: + approvals_read: Access Approval Requests + approvals_create: Create Approval Requests + approvals_decide: Approve or Reject Approval Requests + assessment_orders_read: Access Assessment Orders + audit_events_read: Access Audit Events + candidates_read: Access Candidates + candidates_create: Create Candidates + candidates_offers_read: Access Offer Terms + candidates_manage: Manage Candidate Status and Properties + candidate_status_read: Access Candidate's status + configuration_read: Access Company Settings + configuration_manage: Manage Company Settings + company_read: Access Company Information + interviews_read: Access Interviews and Timeslots + interviews_write: Create, update and delete Interviews and Timeslots + interview_types_read: Access Interview Types + interview_types_write: Create and delete Interview Types + jobs_read: Access Jobs + jobs_manage: Manage jobs + jobs_publications_manage: Publish Jobs + job_applications_read: Access Job Applications + messages_write: Message Users + messages_manage: Manage Messages + messages_read: Access Messages + reporting_read: Get analytics reports and download report files + reporting_write: Manage/execute analytics reports + reviews_read: Access Reviews + reviews_write: Create, update and delete Reviews + users_read: Access Users + user_me_read: Access information about my user + users_manage: Manage Users + webhooks_read: View webhook subscriptions + webhooks_write: Create new webhook subscription + webhooks_delete: Delete webhook subscription + webhooks_manage: View, create and delete webhook subscriptions + oauth2_master: + type: oauth2 + flows: + clientCredentials: + tokenUrl: https://api.smartrecruiters.com/identity/oauth/token + scopes: + partner_configuration_manage: >- + Allows modification of global configuration and creation of + customer level integrations + oauth2: + type: oauth2 + flows: + clientCredentials: + tokenUrl: https://www.partner.com/identity/oauth/token + scopes: + jobs_read: Allows reading job details + candidates_read: Allows reading candidate details + assessment_result_manage: Allows managing assessment result + packages_view: Allows reading list of assessment packages + orders_manage: Allows creating orders + requestBodies: + OnboardingStatus: + description: Onboarding status. + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardingStatus' + required: true + CandidatePropertyInputValue: + description: Input value of the candidate property. + content: + application/json: + schema: + $ref: '#/components/schemas/CandidatePropertyInputValue' + CandidateInput: + description: Candidate object that needs to be created. + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateInput' + required: true + Resume: + content: + multipart/form-data: + schema: + $ref: >- + #/components/schemas/CandidatesParseResumeAndAssignToTalentPoolRequest + CandidateStatus: + description: Candidate Status to be set + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateStatus' + BatchConsentRequest: + content: + application/json: + schema: + $ref: '#/components/schemas/CandidatesRequestConsentFromMultipleRequest' + BatchCandidatePropertyValue: + content: + application/json: + schema: + $ref: '#/components/schemas/CandidatesUpdateCandidatePropertiesRequest' + JSONPatch: + description: patch request + content: + application/json-patch+json: + schema: + $ref: '#/components/schemas/JSONPatch' + example: + - op: replace + path: /firstName + value: firstNameValue + - op: add + path: /ssoIdentifier + value: ssoIdentifierValue + Publication: + description: Publication object + content: + application/json: + schema: + $ref: '#/components/schemas/Publication' + JobPositionInput: + description: Position body object + content: + application/json: + schema: + $ref: '#/components/schemas/JobPositionInput' + required: true + JobAdContent: + description: job ad + content: + application/json: + schema: + $ref: '#/components/schemas/JobAdContent' + required: true + JobCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/JobWebhookPayload' + JobAdCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/JobAdWebhookPayload' + JobAdPostingsCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/JobAdPostingsWebhookPayload' + PositionCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/PositionWebhookPayload' + ApplicationCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationWebhookPayload' + ApplicationAttachmentCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationAttachmentWebhookPayload' + CandidateCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateWebhookPayload' + OfferCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/OfferWebhookPayload' + OfferApprovalCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/OfferApprovalWebhookPayload' + JobApprovalCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/JobApprovalWebhookPayload' + ReviewCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/ReviewWebhookPayload' + ScreeningQuestionsAnswersCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/ScreeningQuestionsAnswersWebhookPayload' + OnboardingProcessCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardingProcessWebhookPayload' + OnboardingHighPriorityAssignmentsCompletedCallback: + content: + application/json: + schema: + $ref: >- + #/components/schemas/OnboardingHighPriorityAssignmentsCompletedWebhookPayload + OnboardingAssignmentsCompletedCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardingAssignmentsCompletedWebhookPayload' + callbacks: + onJobCreated: + '{$request.body#/callbackUrl}': + post: + summary: Job created webhook callback + operationId: onJobCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Job updated webhook callback + operationId: onJobUpdatedCallback + description: > + Events will be triggered when any of the following job properties is + changed: + + - `title` + + - `refNumber` + + - `department` + + - `location` + + - `targetHiringDate` + + - `industry` + + - `function` + + - `typeOfEmployment` + + - `experienceLevel` + + - `eooCategory` + + - `template` + + - any of job `properties` value + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobStatusUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Job status updated webhook callback + operationId: onJobStatusUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobHiringTeamUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Job hiring-team updated webhook callback + operationId: onJobHiringTeamUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobAdCreated: + '{$request.body#/callbackUrl}': + post: + summary: Job ad created webhook callback + operationId: onJobAdCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobAdCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobAdUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Job ad updated webhook callback + operationId: onJobAdUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobAdCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobAdPostingsUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Job ad postings updated webhook callback + operationId: onJobAdPostingsUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobAdPostingsCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onPositionCreated: + '{$request.body#/callbackUrl}': + post: + summary: Position created webhook callback + operationId: onPositionCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/PositionCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onPositionUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Position updated webhook callback + operationId: onPositionUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/PositionCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onPositionDeleted: + '{$request.body#/callbackUrl}': + post: + summary: Position deleted webhook callback + operationId: onPositionDeletededCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/PositionCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onApplicationCreated: + '{$request.body#/callbackUrl}': + post: + summary: Application created webhook callback + operationId: onApplicationCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ApplicationCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onApplicationStatusUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Application status updated webhook callback + operationId: onApplicationStatusUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ApplicationCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onApplicationFieldsUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Application fields updated webhook callback + operationId: onApplicationFieldsUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ApplicationCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onApplicationOnboardingStatusUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Application onboarding status updated webhook callback + operationId: onApplicationOnboardingStatusUpdated + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ApplicationCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onApplicationAttachmentCreated: + '{$request.body#/callbackUrl}': + post: + summary: Application attachment created webhook callback + operationId: onApplicationAttachmentCreated + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ApplicationAttachmentCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onApplicationSourceUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Application source updated webhook callback + operationId: onApplicationSourceUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ApplicationCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onCandidateCreated: + '{$request.body#/callbackUrl}': + post: + summary: Candidate created webhook callback + operationId: onCandidateCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/CandidateCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onCandidateUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Candidate updated webhook callback + operationId: onCandidateUpdatedCallback + description: > + Events will be triggered when any of the following candidate + properties is changed: + + - `firstName` + + - `lastName` + + - `email` + + - `phoneNumber` + + - `location` + + - `web` + + - `education` + + - `experience` + + - `internal` + + - `tags` + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/CandidateCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onCandidateDeleted: + '{$request.body#/callbackUrl}': + post: + summary: Candidate created webhook callback + operationId: onCandidateDeletedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/CandidateCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferCreated: + '{$request.body#/callbackUrl}': + post: + summary: Offer created webhook callback + operationId: onOfferCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Offer updated webhook callback + operationId: onOfferUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferApprovalCreated: + '{$request.body#/callbackUrl}': + post: + summary: Created offer approval webhook callback + operationId: onOfferApprovalCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferApprovalApproved: + '{$request.body#/callbackUrl}': + post: + summary: Approved offer approval webhook callback + operationId: onOfferApprovalApprovedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferApprovalRejected: + '{$request.body#/callbackUrl}': + post: + summary: Rejected offer approval webhook callback + operationId: onOfferApprovalRejectedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferApprovalAbandoned: + '{$request.body#/callbackUrl}': + post: + summary: Abandoned offer approval webhook callback + operationId: onOfferApprovalAbandonedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferApprovalStepApproved: + '{$request.body#/callbackUrl}': + post: + summary: Approved offer approval step webhook callback + operationId: onOfferApprovalStepApprovedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferApprovalStepRejected: + '{$request.body#/callbackUrl}': + post: + summary: Rejected offer approval step webhook callback + operationId: onOfferApprovalStepRejectedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferApproverSkipped: + '{$request.body#/callbackUrl}': + post: + summary: Skipped offer approver webhook callback + operationId: onOfferApproverSkippedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferApproverDelegated: + '{$request.body#/callbackUrl}': + post: + summary: Delegated offer approver webhook callback + operationId: onOfferApproverDelegatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferApprovalCommentCreated: + '{$request.body#/callbackUrl}': + post: + summary: Created offer approval comment webhook callback + operationId: onOfferApprovalCommentCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobApprovalCreated: + '{$request.body#/callbackUrl}': + post: + summary: Created job approval webhook callback + operationId: onJobApprovalCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobApprovalApproved: + '{$request.body#/callbackUrl}': + post: + summary: Approved job approval webhook callback + operationId: onJobApprovalApprovedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobApprovalRejected: + '{$request.body#/callbackUrl}': + post: + summary: Rejected job approval webhook callback + operationId: onJobApprovalRejectedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobApprovalAbandoned: + '{$request.body#/callbackUrl}': + post: + summary: Abandoned job approval webhook callback + operationId: onJobApprovalAbandonedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobApprovalStepApproved: + '{$request.body#/callbackUrl}': + post: + summary: Approved job approval step webhook callback + operationId: onJobApprovalStepApprovedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobApprovalStepRejected: + '{$request.body#/callbackUrl}': + post: + summary: Rejected job approval step webhook callback + operationId: onJobApprovalStepRejectedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobApproverSkipped: + '{$request.body#/callbackUrl}': + post: + summary: Skipped job approver webhook callback + operationId: onJobApproverSkippedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobApproverDelegated: + '{$request.body#/callbackUrl}': + post: + summary: Delegated job approver webhook callback + operationId: onJobApproverDelegatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobApprovalCommentCreated: + '{$request.body#/callbackUrl}': + post: + summary: Created job approval comment webhook callback + operationId: onJobApprovalCommentCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onReviewCreated: + '{$request.body#/callbackUrl}': + post: + summary: Review created webhook callback + operationId: onReviewCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ReviewCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onReviewUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Review updated webhook callback + operationId: onReviewUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ReviewCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onReviewDeleted: + '{$request.body#/callbackUrl}': + post: + summary: Review deleted webhook callback + operationId: onReviewDeletedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ReviewCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onApplicationScreeningAnswersCreated: + '{$request.body#/callbackUrl}': + post: + summary: Screening answers created + operationId: onApplicationScreeningAnswersCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ScreeningQuestionsAnswersCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onApplicationScreeningAnswersUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Screening answers updated + operationId: onApplicationScreeningAnswersUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ScreeningQuestionsAnswersCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOnboardingProcessStarted: + '{$request.body#/callbackUrl}': + post: + summary: Onboarding process started + operationId: onOnboardingProcessStartedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OnboardingProcessCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOnboardingAssignmentsHighPriorityCompleted: + '{$request.body#/callbackUrl}': + post: + summary: Onboarding high priority assignments were completed + operationId: onOnboardingAssignmentsHighPriorityCompletedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: >- + #/components/requestBodies/OnboardingHighPriorityAssignmentsCompletedCallback + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOnboardingAssignmentsCompleted: + '{$request.body#/callbackUrl}': + post: + summary: Onboarding all assignments were completed + operationId: onOnboardingAssignmentsCompletedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OnboardingAssignmentsCompletedCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' +x-readme: + explorer-enabled: true + proxy-enabled: true + samples-enabled: true +_id: 63529e73531509001de49942 diff --git a/sdks/db/generate-repository-description-cache/bl-ink.json b/sdks/db/generate-repository-description-cache/bl-ink.json index 90b52e6df..afc11e742 100644 --- a/sdks/db/generate-repository-description-cache/bl-ink.json +++ b/sdks/db/generate-repository-description-cache/bl-ink.json @@ -1,3 +1,4 @@ { - "BL.INK powers shortened URLs and QR codes with unlimited data and flexibility. \n\nWith BL.INK, you'll create thousands of custom links that capture unlimited data points so you can measure every user touchpoint and perfect every interaction. \n\nEveryone on your team can create perfect data to accurately measure every element of marketing attribution. Every customer than visits your link gets the information they need, every time, with no broken links. \n\nNeed to change the link when a contest ends, or show the page in the user's own language? It's easy with BL.INK. \n\nNo other URL shortener or QR code creator integrates with your existing tools, helps you avoid broken links, enables zero down-time when updating links, and has a platform built based on how enterprise companies work. Only BL.INK. Trusted by demanding global brands since 2008.": "BL.INK powers shortened URLs and QR codes with unlimited data and flexibility to measure user touchpoints and marketing attribution accurately. Create custom links easily, avoid broken links, and seamlessly update content. Trusted by global brands since 2008. BL.INK's {language} SDK generated by Konfig (https://konfigthis.com/)." + "BL.INK powers shortened URLs and QR codes with unlimited data and flexibility. \n\nWith BL.INK, you'll create thousands of custom links that capture unlimited data points so you can measure every user touchpoint and perfect every interaction. \n\nEveryone on your team can create perfect data to accurately measure every element of marketing attribution. Every customer than visits your link gets the information they need, every time, with no broken links. \n\nNeed to change the link when a contest ends, or show the page in the user's own language? It's easy with BL.INK. \n\nNo other URL shortener or QR code creator integrates with your existing tools, helps you avoid broken links, enables zero down-time when updating links, and has a platform built based on how enterprise companies work. Only BL.INK. Trusted by demanding global brands since 2008.": "BL.INK powers shortened URLs and QR codes with unlimited data and flexibility to measure user touchpoints and marketing attribution accurately. Create custom links easily, avoid broken links, and seamlessly update content. Trusted by global brands since 2008. BL.INK's {language} SDK generated by Konfig (https://konfigthis.com/).", + "BL.INK powers shortened URLs and QR codes with unlimited data and flexibility.\n\nWith BL.INK, you'll create thousands of custom links that capture unlimited data points so you can measure every user touchpoint and perfect every interaction.\n\nEveryone on your team can create perfect data to accurately measure every element of marketing attribution. Every customer than visits your link gets the information they need, every time, with no broken links.\n\nNeed to change the link when a contest ends, or show the page in the user's own language? It's easy with BL.INK.\n\nNo other URL shortener or QR code creator integrates with your existing tools, helps you avoid broken links, enables zero down-time when updating links, and has a platform built based on how enterprise companies work. Only BL.INK. Trusted by demanding global brands since 2008.": "BL.INK provides powerful URL shortening and QR code generation with robust data tracking capabilities. Create custom links, measure user touchpoints, and optimize marketing attribution effortlessly. Integrate seamlessly with existing tools and ensure zero downtime for link updates. Trusted by leading global brands." } \ No newline at end of file diff --git a/sdks/db/generate-repository-description-cache/recruiterflow.json b/sdks/db/generate-repository-description-cache/recruiterflow.json index e8c9b3d6d..788d8a145 100644 --- a/sdks/db/generate-repository-description-cache/recruiterflow.json +++ b/sdks/db/generate-repository-description-cache/recruiterflow.json @@ -1,3 +1,4 @@ { - "Recruiterflow is a dedicated Applicant Tracking, CRM and Recruiting platform for Ambitious Recruiting & executive search firms. What makes Recruiterflow different from other ATS and recruiting CRM products, is Recruiting automation, simplicity and ease of use. \n\nIt offers drag-and-drop workflows, email and text messaging, API integrations, and ATS capabilities. It also encompasses advanced functionalities like candidate portals, company blocking, automatic email tracking, job board posting, built-in report analytics and more. With its G Suite and office365 integration, you can two-way sync emails to clients and candidates.\n\nWith Recruiterflow you can manage & maintain your candidate and client pipeline, post jobs across multiple job boards and track candidates, write personalized well-crafted email sequences, deliver candidate experience without extra efforts and get a detailed insight about the performance of your team and recruiting effort. \n\nYou can review your recruiting strategy and performance in real time using Recruiterflow's real-time statistics. You can also build your own custom apps on Recruiterflow using open APIs.\n\nRecruiterflow's user interface is designed to be effortlessly navigable, ensuring recruiters can quickly adapt to the platform without extensive training. You just need to sign in with your work email id and you are good to go. We provide a free trial of the product for 7 days.": "Recruiterflow: ATS & CRM for recruiting firms with automation, workflows, API integrations, candidate portals, advanced analytics, and G Suite integration. User-friendly interface, real-time stats, custom apps, and 7-day free trial. Recruiterflow's {language} SDK generated by Konfig (https://konfigthis.com/)." + "Recruiterflow is a dedicated Applicant Tracking, CRM and Recruiting platform for Ambitious Recruiting & executive search firms. What makes Recruiterflow different from other ATS and recruiting CRM products, is Recruiting automation, simplicity and ease of use. \n\nIt offers drag-and-drop workflows, email and text messaging, API integrations, and ATS capabilities. It also encompasses advanced functionalities like candidate portals, company blocking, automatic email tracking, job board posting, built-in report analytics and more. With its G Suite and office365 integration, you can two-way sync emails to clients and candidates.\n\nWith Recruiterflow you can manage & maintain your candidate and client pipeline, post jobs across multiple job boards and track candidates, write personalized well-crafted email sequences, deliver candidate experience without extra efforts and get a detailed insight about the performance of your team and recruiting effort. \n\nYou can review your recruiting strategy and performance in real time using Recruiterflow's real-time statistics. You can also build your own custom apps on Recruiterflow using open APIs.\n\nRecruiterflow's user interface is designed to be effortlessly navigable, ensuring recruiters can quickly adapt to the platform without extensive training. You just need to sign in with your work email id and you are good to go. We provide a free trial of the product for 7 days.": "Recruiterflow: ATS & CRM for recruiting firms with automation, workflows, API integrations, candidate portals, advanced analytics, and G Suite integration. User-friendly interface, real-time stats, custom apps, and 7-day free trial. Recruiterflow's {language} SDK generated by Konfig (https://konfigthis.com/).", + "Recruiterflow is a dedicated Applicant Tracking, CRM and Recruiting platform for Ambitious Recruiting & executive search firms. What makes Recruiterflow different from other ATS and recruiting CRM products, is Recruiting automation, simplicity and ease of use.\n\nIt offers drag-and-drop workflows, email and text messaging, API integrations, and ATS capabilities. It also encompasses advanced functionalities like candidate portals, company blocking, automatic email tracking, job board posting, built-in report analytics and more. With its G Suite and office365 integration, you can two-way sync emails to clients and candidates.\n\nWith Recruiterflow you can manage & maintain your candidate and client pipeline, post jobs across multiple job boards and track candidates, write personalized well-crafted email sequences, deliver candidate experience without extra efforts and get a detailed insight about the performance of your team and recruiting effort.\n\nYou can review your recruiting strategy and performance in real time using Recruiterflow's real-time statistics. You can also build your own custom apps on Recruiterflow using open APIs.\n\nRecruiterflow's user interface is designed to be effortlessly navigable, ensuring recruiters can quickly adapt to the platform without extensive training. You just need to sign in with your work email id and you are good to go. We provide a free trial of the product for 7 days.": "Recruiterflow: ATS & CRM platform for recruiting firms with automation, simplicity, and advanced features. Drag-and-drop workflows, email/text, API integrations, ATS, candidate portals, job board posting, G Suite/Office365 sync, real-time analytics, and custom app development." } \ No newline at end of file diff --git a/sdks/db/generate-repository-description-cache/smart-recruiters.json b/sdks/db/generate-repository-description-cache/smart-recruiters.json new file mode 100644 index 000000000..60f37f6f4 --- /dev/null +++ b/sdks/db/generate-repository-description-cache/smart-recruiters.json @@ -0,0 +1,3 @@ +{ + "SmartRecruiters is a California-based cloud platform that offers solutions including talent sourcing, recruitment and applicant tracking for businesses.": "SmartRecruiters is a California-based cloud platform that offers solutions including talent sourcing, recruitment and applicant tracking for businesses. SmartRecruiters's {language} SDK generated by Konfig (https://konfigthis.com/)." +} \ No newline at end of file diff --git a/sdks/db/intermediate-fixed-specs/smartrecruiters/openapi.yaml b/sdks/db/intermediate-fixed-specs/smartrecruiters/openapi.yaml new file mode 100644 index 000000000..cb43fdffc --- /dev/null +++ b/sdks/db/intermediate-fixed-specs/smartrecruiters/openapi.yaml @@ -0,0 +1,20104 @@ +openapi: 3.0.2 +info: + title: Webhooks + contact: + name: SmartRecruiters + url: https://developers.smartrecruiters.com + version: '201910.4' + description: SmartOnboard Public API +servers: + - url: https://api.smartrecruiters.com/webhooks-api/v201907 +paths: + /postings/{uuid}/candidates: + post: + tags: + - Application API + summary: Create a New Candidate Application + description: >- + Operation is done on behalf of a candidate – they can access and edit + the data, including attachments + externalDocs: + url: https://developers.smartrecruiters.com/docs/post-an-application + operationId: createCandidate + parameters: + - name: uuid + in: path + description: Posting UUID + required: true + schema: + pattern: >- + [a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12} + type: string + requestBody: + description: New candidate data + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiRequest' + required: true + responses: + '200': + description: Successful request + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiResponse' + '400': + description: Invalid request + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + '401': + description: Unauthenticated + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + '429': + description: 'Too Many Requests ' + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + security: + - key: [] + /postings/{uuid}/candidates/{candidateId}/status: + get: + tags: + - Application API + summary: Get candidate status + externalDocs: + url: >- + https://developers.smartrecruiters.com/docs/get-candidate-application-status + operationId: getApplicationStatus + parameters: + - name: uuid + in: path + description: Posting UUID + required: true + schema: + pattern: >- + [a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12} + type: string + - name: candidateId + in: path + required: true + schema: + type: string + responses: + '200': + description: Successful request + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationStatusInfo' + '400': + description: Invalid request + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + '401': + description: Unauthenticated + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + '429': + description: 'Too Many Requests ' + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + security: + - key: [] + /postings/{uuid}/configuration: + get: + tags: + - Application API + summary: Get application configuration for posting + description: > + Returns application configuration for posting. + + Configuration contains screening questions, privacy policies and + settings. + + Optionally, conditional questions can be included in the response. + externalDocs: + url: >- + https://developers.smartrecruiters.com/docs/get-application-screening-questions-and-privacy-policies + operationId: getApplyConfigurationForPosting + parameters: + - name: Accept-Language + in: header + description: Language for screening questions. By default 'en'. + schema: + type: string + - name: uuid + in: path + description: Posting UUID + required: true + schema: + pattern: >- + [a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12} + type: string + - name: conditionalsIncluded + in: query + description: > + Specifies whether conditional questions should be returned in the + response. 'false' if not specified + + - Only available for BETA customers + schema: + type: boolean + responses: + '200': + description: Successful request + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyConfiguration' + '400': + description: Invalid request + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + '401': + description: Unauthenticated + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + '429': + description: 'Too Many Requests ' + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/ApplyApiError' + security: + - key: [] + /approvals/{approvalRequestId}: + get: + summary: Get approval request by id + parameters: + - name: approvalRequestId + in: path + description: Approval request identifier + required: true + schema: + type: string + responses: + '200': + description: Found approval request + content: + application/json: + schema: + $ref: '#/components/schemas/ApprovalRequest' + '404': + description: | + with code + * **APPROVAL_REQUEST_NOT_FOUND** when approval request is not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + operationId: approvals.getById + security: + - key: [] + - oauth: + - approvals_read + tags: + - approvals + /approvals/{approvalRequestId}/comments: + get: + summary: Get comments for given approval request + parameters: + - name: approvalRequestId + in: path + description: Approval request identifier + required: true + schema: + type: string + responses: + '200': + description: Found comments + content: + application/json: + schema: + $ref: '#/components/schemas/Comments' + '404': + description: | + with code + * **APPROVAL_REQUEST_NOT_FOUND** when approval request is not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + operationId: approvals.comments.get + security: + - key: [] + - oauth: + - approvals_read + tags: + - approvals + post: + summary: Add comment to given approval request + parameters: + - name: approvalRequestId + in: path + description: Approval request identifier + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + type: object + required: + - content + - authorId + properties: + content: + type: string + maxLength: 10000 + authorId: + type: string + responses: + '201': + description: Created comment + content: + application/json: + schema: + $ref: '#/components/schemas/Comment' + '400': + description: > + + * **COMMENT_CONTAINS_ILLEGAL_CHARACTERS** when comment contains + illegal characters + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: | + + * **UNAUTHORIZED_ACCESS** when no permissions to add a comment + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + * **APPROVAL_REQUEST_NOT_FOUND** when approval request is not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Input validation fails + operationId: approvals.comments.create + security: + - key: [] + - oauth: + - approvals_read + tags: + - approvals + /approvals: + get: + summary: Get pending approvals requests where you are an approver. + description: The max number of returned approval requests is 100. + parameters: + - name: pageId + description: > + Identifier for the paged list of approval requests. To get the first + page of approval request, leave it blank. + in: query + required: false + schema: + type: string + responses: + '200': + description: Approval requests + content: + application/json: + schema: + $ref: '#/components/schemas/ApprovalRequests' + headers: + Link: + schema: + type: string + description: | + Links to related resources, in the format defined by + [RFC 8288](https://tools.ietf.org/html/rfc8288). + This will include a link with relation type `next` to the + next page, if there is a next page. + '400': + description: | + Unable to retrieve approval requests with codes + * **INVALID_PAGE_ID** when pageId is incorrect + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + operationId: approvals.get + security: + - key: [] + - oauth: + - approvals_read + tags: + - approvals + post: + summary: Create approval request + description: > + The new approval request will be created based on approval request with + provided baseId. If base approval request is pending, it will be + abandoned. The newly created request will contain new id, type, decision + mode and steps, as well as PENDING statuses and decisions. + requestBody: + content: + application/json: + schema: + type: object + required: + - baseId + - type + - decisionMode + - steps + properties: + baseId: + $ref: '#/components/schemas/ApprovalRequestId' + type: + $ref: '#/components/schemas/Type' + decisionMode: + $ref: '#/components/schemas/DecisionMode' + steps: + description: Steps to complete approval + type: array + minItems: 1 + items: + $ref: '#/components/schemas/StepInput' + responses: + '201': + description: Approval request created + content: + application/json: + schema: + $ref: '#/components/schemas/ApprovalRequest' + '400': + description: > + Unable to create approval request with codes + + * **BASE_ID_NOT_FOUND** when base approval request id doesn't exist + + * **APPROVER_ID_NOT_FOUND** when at least one of approver ids + doesn't exist + + * **INVALID_DECISION_MODE** when decisionMode is `all` and type is + `sequential`. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: > + Unable to create approval request with codes + + * **UNAUTHORIZED_ACCESS** when no permissions to create approval + request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + operationId: approvals.create + security: + - key: [] + - oauth: + - approvals_create + tags: + - approvals + /approvals/{approvalRequestId}/approve-decisions: + post: + summary: Approve the approval request by id + parameters: + - name: approvalRequestId + in: path + description: Approval request identifier + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + type: object + required: + - approverId + properties: + approverId: + type: string + responses: + '204': + description: Approval request approved + '400': + description: > + with code + + * **APPROVAL_REQUEST_NOT_FOUND** + + * **APPROVAL_COMPLETED** when approval request is already approved, + rejected or abandoned + + * **DECISION_NOT_YET_ALLOWED** when trying to take decision before + previous step completion + + * **APPROVER_NOT_ALLOWED** when user is not an approver in given + approval request + + * **DECISION_ALREADY_TAKEN** when approver is trying to modify + already taken decision + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + * **APPROVAL_REQUEST_NOT_FOUND** when approval request is not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + operationId: approvals.approve + security: + - key: [] + - oauth: + - approvals_read + - approvals_decide + tags: + - approvals + /approvals/{approvalRequestId}/reject-decisions: + post: + summary: Reject the approval request by id + parameters: + - name: approvalRequestId + in: path + description: Approval request identifier + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + type: object + required: + - approverId + - comment + properties: + approverId: + type: string + comment: + type: string + responses: + '204': + description: Approval request rejected + '400': + description: > + with code + + * **APPROVAL_REQUEST_NOT_FOUND** + + * **APPROVAL_COMPLETED** when approval request is already approved, + rejected or abandoned + + * **DECISION_NOT_YET_ALLOWED** when trying to take decision before + previous step completion + + * **APPROVER_NOT_ALLOWED** when user is not an approver in given + approval request + + * **DECISION_ALREADY_TAKEN** when approver is trying to modify + already taken decision + + * **COMMENT_IS_REQUIRED** when approver is trying reject without the + comment + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + * **APPROVAL_REQUEST_NOT_FOUND** when approval request is not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + operationId: approvals.reject + security: + - key: [] + - oauth: + - approvals_read + - approvals_decide + tags: + - approvals + /partner/configuration: + get: + tags: + - configuration + summary: get partner configuration + operationId: getPartnerConfig + responses: + '200': + description: Partner configuration + content: + application/json: + schema: + $ref: '#/components/schemas/PartnerConfiguration' + '401': + description: Unauthorized request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Request missed required scopes + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Configuration does not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - oauth2_master: + - partner_configuration_manage + put: + tags: + - configuration + summary: saves configuration for partner + description: Endpoint for saving partner's configuration. + operationId: savePartnerConfig + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PartnerConfigurationRequest' + responses: + '200': + description: Configuration created + content: + application/json: + schema: + $ref: '#/components/schemas/PartnerConfiguration' + '400': + description: Invalid configuration provided + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Request missed required scopes + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - oauth2_master: + - partner_configuration_manage + /integration/company/{companyId}: + post: + tags: + - integration + summary: enable the company integration + description: |2- + + Set up integration. + 1. Validates if token has client_credentials_write scope (created using master credentials) + 2. Validates if company gave consent for integration with partner + 3. Saves credentials send by the partner + 4. Created credentials for current company + 5. Sends created credentials back to partner + operationId: setUpIntegration + parameters: + - name: companyId + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ClientCredentials' + responses: + '200': + description: Customer-level integration credentials + content: + application/json: + schema: + $ref: '#/components/schemas/ClientCredentials' + '400': + description: Invalid request body + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + Request missed required scopes or company did not give consent for + integration + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Partner configuration does not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Partner already integrated for company + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - oauth2_master: + - partner_configuration_manage + /orders/{orderId}/results: + patch: + tags: + - result + summary: updates package result + description: >- + Updates results for package ordered. Follows RFC 7396 rules to describe + set of modifications. + operationId: packageResultUpdate + parameters: + - name: orderId + in: path + description: Order ID + required: true + schema: + type: string + format: uuid + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PackageResult' + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PackageResult' + '400': + description: Invalid result partial update provided + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Request missed required scopes + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Order with given id does not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '415': + description: Unsupported payload format + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - oauth2: + - assessment_result_manage + /orders/{orderId}/results/attachment: + post: + tags: + - result + summary: add attachment to order + description: >- + Add attachment to order. Adding attachment to inline assessment orders + is not supported. + operationId: addAttachmentToOrder + parameters: + - name: orderId + in: path + description: Order ID + required: true + schema: + type: string + format: uuid + requestBody: + content: + multipart/form-data: + schema: + type: string + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: '#/components/schemas/AttachmentResult' + '401': + description: Unauthorized request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Request missed required scopes + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Order with given id does not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /integration: + get: + tags: + - integration + summary: Shows consent form on partner side + description: >- + Endpoint to which SmartRecruiters will send request for consent. + + After that Partner will: + + 1. Create client credentials which may be used on SmartRecruiters side + + 2. Retrieve access_token using master client credentials + + 3. Send generated credentials using oauth token obtained + + In return SmartRecruiters would send client credentials for company + setting up the integration. + operationId: askForConsent + parameters: + - name: companyId + in: query + description: id of company setting up the integration + schema: + type: string + responses: + '200': + description: Page with consent for customer admin + content: + text/html: + schema: + type: string + /integrations/companies/{companyId}: + delete: + tags: + - integration + summary: Removes integration on partner side + operationId: deleteIntegration + parameters: + - name: companyId + in: path + description: id of company with integration + required: true + schema: + type: string + responses: + '204': + description: No Content + content: + application/json: + schema: + $ref: '#/components/schemas/Unit' + /packages: + get: + tags: + - packages + summary: Retrieves a list of packages + operationId: listPackages + parameters: + - name: requester + in: header + description: Information about recruiter requesting list of packages + required: false + schema: + $ref: '#/components/schemas/Requester' + - name: country-code + in: query + description: country code + required: false + schema: + type: string + - name: region-abbr + in: query + description: region abbreviation + required: false + schema: + type: string + - name: city + in: query + description: city + required: false + schema: + type: string + - name: address + in: query + description: address + required: false + schema: + type: string + - name: postal-code + in: query + description: postal code + required: false + schema: + type: string + - name: remote + in: query + description: describe whether job is remote or not + required: false + schema: + type: boolean + - name: partner-field-id + in: query + description: >- + Example partner field. Partner defines list of allowed fields in + configuration. Client binds job fields in his configuration. All + fields with non-empty values will be included in this call. + required: false + schema: + type: string + responses: + '200': + description: List of assessment packages + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/AssessmentPackage' + '204': + description: Returned when there are not packages to present + '400': + description: Invalid requester data in header + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Unauthorized request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Request missed required scopes + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - oauth2: + - packages_view + /packages/{assessmentPackageId}: + get: + tags: + - packages + summary: Retrieves a package by id + operationId: getPackageById + parameters: + - name: assessmentPackageId + in: path + required: true + schema: + type: string + responses: + '200': + description: Assessment package + content: + application/json: + schema: + $ref: '#/components/schemas/AssessmentPackage' + '401': + description: Unauthorized request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Request missed required scopes + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: No assessment package with given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - oauth2: + - packages_view + /packages/orders: + post: + tags: + - orders + summary: Orders assessment package for candidate + operationId: ordersAssessmentPackage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AssessmentPackageOrderRequest' + responses: + '202': + description: Order acceptance + content: + application/json: + schema: + $ref: '#/components/schemas/Unit' + '401': + description: Unauthorized request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Request missed required scopes + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: There is no package which was ordered + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - oauth2: + - orders_modify + /packages/inline/orders: + post: + tags: + - orders + summary: Orders inline assessment package for candidate + operationId: ordersInlineAssessmentPackage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/InlineAssessmentPackageOrderRequest' + responses: + '200': + description: Response containing url to inline assessment + content: + application/json: + schema: + $ref: '#/components/schemas/InlineAssessmentPackageResponse' + '401': + description: Unauthorized request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Request missed required scopes + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: There is no package which was ordered + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - oauth2: + - orders_modify + /oauth/token: + post: + tags: + - token + summary: Exchange credentials for an access token + description: >- + SmartRecruiters will call this endpoint to exchange the credentials + received from Partner for an access token. + operationId: getToken + requestBody: + content: + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TokenInput' + responses: + '200': + description: Access token + content: + application/json: + schema: + $ref: '#/components/schemas/AccessToken' + '400': + description: Error Response https://tools.ietf.org/html/rfc6749#section-5.2 + content: + application/json: + schema: + $ref: '#/components/schemas/TokenErrorResponse' + /assessment-orders: + get: + summary: Retrieves all assessment orders for specified application + parameters: + - in: query + name: applicationId + description: ID of the application + required: true + schema: + $ref: '#/components/schemas/Uuid' + responses: + '200': + description: Assessment orders were retrieved + content: + application/json: + schema: + $ref: '#/components/schemas/AssessmentOrders' + '401': + description: > + with codes: + + * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is not + authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **APPLICATION_NOT_FOUND** when there is no application with given + id + + * **MISSING_COMPANY_INTEGRATION** when no integration with + assessment partner was found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + operationId: orders.getList + security: + - key: [] + - oauth: + - assessment_orders_read + tags: + - assessment orders + /audit-events: + get: + responses: + '200': + description: A single page of audit events + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/Events' + '403': + description: Audit events access forbidden. ADMINISTRATOR role is required. + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Data collected via the Audit API will be retained at least 26 months. + When `eventDateAfter` and `eventDateBefore` are not set, by default, the + time range is set to the last 7 days. Below is the list of the events + that are currently exposed in the API: + + * **USER_ACCOUNT_ACTIVATED** - user account has been activated, user can + now login to the system + + * **USER_ACCOUNT_CREATED** - user account has been created, in order to + log in to the system account has to be activated first + + * **USER_ACCOUNT_DEACTIVATED** - user account has been deactivated, + logging possibility disabled for the user + + * **USER_ACCOUNT_UPDATED** - user account has been modified + + * **USER_AUTHENTICATION_INVALID_CREDENTIALS** - user authentication + failed due to invalid credentials. + + Additional context represents the type of the authentication method: + + ```json + + context: { + authenticationType: "PASSWORD" + } + + ``` + + * **USER_AUTHENTICATION_SUCCESS** - user authentication succeeded + + Additional context represents the type of the authentication method: + + ```json + + context: { + authenticationType: "PASSWORD", + officeName: "string" //Optional + } + + ``` + + * **USER_PASSWORD_CHANGED** - user password has been changed + + * **USER_PASSWORD_RESET** - user password has been reset + + * **USER_ROLE_CHANGED** - user role has been changed, + + Additional context represents previous and current role of the user: + + ```json + + context: { + currentRole: "RESTRICTED", + previousRole: "STANDARD" + } + + ``` + + * **USER_API_KEY_RENEWED** - user api-key has been renewed + + * **CREDENTIALS_CREATED** - api-key or OAuth credentials has been + renewed + + * **CREDENTIALS_CHANGED** - api-key or OAuth credentials has been + modified + + * **CREDENTIALS_REVOKED** - api-key or OAuth credentials has been + modified + + Additional context represents credential type: + + ```json + + context: { + credentialType: "string" + } + + ``` + + * **SEARCH** - user performed search + + For entityType CANDIDATE additional context represents candidate search + event: + + ```json + + context: { + keyword: [ + "test" + ], + jobTitles: [ + "Freelancer", + "Software Engineer" + ], + jobNames: [ + "Java Developer, San Francisco" + ], + companies: [ + "SmartRecruiters" + ], + schools: [ + "University of Science and Technology" + ] + ``` + + * **JOB_DELETED** - job was deleted + + Additional context represents the deleted job: + + ```json + + context: { + jobName: "string", + jobRefNumber: "string" + } + + ``` + + * **HIRING_TEAM_MEMBER_ADDED** - a new member was added to the hiring + team of the job + + Additional context represents the new member: + + ```json + + context: { + userId: "string", + roleId: "string", + roleName: "string" + } + + ``` + + * **HIRING_TEAM_MEMBER_REMOVED** - a member was removed from the hiring + team of the job + + Additional context represents the removed member: + + ```json + + context: { + userId: "string" + } + + ``` + + * **HIRING_TEAM_ROLE_UPDATED** - role of one of the hiring team members + was updated + + Additional context represents previous and current role of the updated + member: + + ```json + + context: { + userId: "string", + previousRoleId: "string", + previousRoleName: "string", + currentRoleId: "string", + currentRoleName: "string" + } + + ``` + + * **APPROVAL_DELEGATION_FROM_USER_CREATED** - a user created an approval + delegation + + * **APPROVAL_DELEGATION_FROM_USER_CANCELLED** - a user cancelled an + approval delegation + + * **APPROVAL_DELEGATION_TO_USER_CREATED** - an approval delegation to a + user (a delegate) has been created + + * **APPROVAL_DELEGATION_TO_USER_CANCELLED** - an approval delegation to + a user (a delegate) has been created + + Additional context represents approval delegation event's details: + + ```json + + context: { + originalApproverId: "string", + delegateApproverId: "string", + startDate: date, + endDate: date + } + + ``` + + * **JOB_APPROVAL_REQUESTED** - a job approval was requested + + Additional context represents approval modified event's details: + + ```json + + comment: { + text: 'string', + authorId: 'string', + date: 'string', + + } + + context: { + comments: [comment] + } + + ``` + + * **JOB_APPROVAL_APPROVED** - a job approval was approved + + Additional context represents approval modified event's details: + + ```json + + comment: { + text: 'string', + authorId: 'string', + date: 'string', + + } + + context: { + comments: [comment] + } + + ``` + + * **JOB_APPROVAL_REJECTED** - a job approval was rejected + + Additional context represents approval modified event's details: + + ```json + + comment: { + text: 'string', + authorId: 'string', + date: 'string', + + } + + context: { + comments: [comment] + } + + ``` + + * **JOB_APPROVAL_ABANDONED** - a job approval was abandoned + + Additional context represents approval modified event's details: + + ```json + + comment: { + text: 'string', + authorId: 'string', + date: 'string', + + } + + context: { + comments: [comment] + } + + ``` + + * **OFFER_APPROVAL_APPROVED** - an offer approval was approved + + * **OFFER_APPROVAL_REJECTED** - an offer approval was rejected + + * **OFFER_APPROVAL_ABANDONED** - an offer approval was abandoned + + Additional context represents approval event's details. + `type` is one of the values: + * sequential - consent of every approver is required, approval requests are sent one by one in a defined order. + * parallel - all approvers can approve at the same time. + + `decisionMode` is one of the values: + * all - consent of every approver is required + * any - consent of a single approver is enough + + ```json + + decision: { + decidedOn: integer, + decision: 'string', + decidedBy: 'string', + userId: 'string' + } + + context: { + approvalRequestId: 'string' + approvers: [decision] + type: 'string', + decisionMode: 'string' + } + + ``` + + * **JOB_APPROVAL_STEP_APPROVED** - a job approval step was approved by + author + + * **JOB_APPROVAL_STEP_REJECTED** - a job approval step was rejected by + author + + Additional context represents approval step modified event's details: + + ```json + + context: { + approver: 'string' + comment: 'string' + } + + ``` + + * **JOB_APPROVAL_STEP_SKIPPED** - an author skipped approver for a job + approval step + + * **OFFER_APPROVAL_STEP_APPROVED** - an offer approval step was approved + by author + + * **OFFER_APPROVAL_STEP_REJECTED** - an offer approval step was rejected + by author + + * **OFFER_APPROVAL_STEP_SKIPPED** - an author skipped approver for an + offer approval step + + Additional context represents approval step modified event's details: + + ```json + + context: { + approvalRequestId: "string" + approver: "string", + reasonId: "string", + comment: "string" + } + + ``` + + * **JOB_APPROVAL_STEP_DELEGATED** - job approval step was delegated to + new approver + + * **OFFER_APPROVAL_STEP_DELEGATED** - job approval step was delegated to + new approver + + Additional context represents approval step delegated event's details: + + ```json + + context: { + approvalRequestId: "string" + originalApproverId: "string", + delegateApproverId: "string" + } + + ``` + + * **OFFER_ACCEPTED** - offer was accepted. Returns viaIntegration which + is set to true if offer was accepted via third party integration like + Docusign + + ```json + + context: { + viaIntegration: "boolean" + } + + ``` + + * **OFFER_DECLINED** - offer was declined. Returns viaIntegration which + is set to true if offer was accepted via third party integration like + Docusign + + ```json + + context: { + viaIntegration: "boolean" + } + + ``` + + * **CANDIDATE_PERSONAL_DATA_MODIFIED** - Candidate personal data were + modified. Only Web Application actions are audited. Event doesn't cover + Customer API. Personal data covers: + * First Name + * Last Name + * E-mail + * Phone + * Location + * Phone Number + * Social Links (Skype Id, Indeed Id, Twitter account, LinkedIn profile, Facebook profile, Websites) + * **CANDIDATE_PROFILE_MODIFIED** - Candidate profile data were modified. + Only Web Application actions are audited. Event doesn't cover Customer + API and Mobile application. + + * **CANDIDATE_DELETED** - Candidate was deleted. The authorType property + can be used to distinguish deletion nature. Following values are + possible: + * USER - candidate was deleted by user + * SYSTEM - candidate was deleted by compliance mechanism (due to retention period end or lack of consent) + * CANDIDATE - candidate deleted oneself + + * **CANDIDATE_PROFILE_OPENED** - Candidate profile was opened by user. + Only Web Application actions are audited. Event doesn't cover Customer + API and Mobile application. + + * **CANDIDATE_EEO_FILLED** - Missing Candidate EEO informations were + filled by user. + + * **CANDIDATE_PROFILE_UPDATED_DUE_TO_MERGE** - candidate profile updated + due to merge. + + Additional context with id of duplicated candidate profile: + + ```json + + context: { + mergedProfileId: "string" + } + + ``` + + * **CANDIDATE_DELETED_DUE_TO_MERGE** - candidate profile deleted due to + merge. + + Additional context with id of master candidate profile: + + ```json + + context: { + masterProfileId: "string" + } + + ``` + + * **CANDIDATE_TAGS_MODIFIED** - candidate tags have been modified. It + means that tags have been added, replaced or deleted from the profile. + + The additional context contains the `tags` that are assigned to the candidate after the successful operation. + + ```json + + context: { + tags: "string" + } + + ``` + + * **APPLICATION_PROPERTIES_UPDATED** - application properties updated. + + Additional context with id of updated properties: + + ```json + + context: { + updatedPropertiesIds: "string", + updatedPropertiesKeys: "string" + } + + ``` + + * **APPLICATION_SOURCE_MODIFIED** - community or job application source + has been changed. + + The additional context contains the old and new source identifier after the successful operation. + + ```json + + context: { + previousSource: "string", + nextSource: "string" + } + + ``` + + * **ONBOARDING_STATUS_UPDATED** - onboarding status updated. + + Additional context with ids of values: + + ```json + + context: { + fromValueId: "string", + toValueId: "string" + } + + ``` + + * **JOB_APPLICATION_CREATED** - job application created. Currently, we + are auditing only actions undertaken by an employee. + + Additional context with ids of values: + + ```json + + context: { + currentStatus: "string" + } + + ``` + + * **JOB_APPLICATION_STATE_MODIFIED** - job application state modified. + Currently, we are auditing only actions undertaken by an employee or + system user. + + Additional context with ids of values: + + ```json + + context: { + currentStatus: "string", + currentStep: "string", //optional, might not be returned if lack of configured step + previousStatus: "string", + previousStep: "string" //optional, might not be returned if lack of configured step + } + + ``` + + * **LRSC_CONSENT_GIVEN** - Consent for data exchange within LinkedIn + Recruiter System Connect integration was given. + + * **OAUTH_APPLICATION_ACCESS_GRANTED** - Access to OAuth application was + granted to given user. + + Additional context represents grant's details: + + ```json + + context: { + applicationId: "string", + applicationName: "string", + startDate: "date-time", + endDate: "date-time" + } + + ``` + + JOB_PROPERTY_* events audit changes from both Web Application on Job + Field Settings page and Configuration API unless otherwise indicated. + + * **JOB_PROPERTY_CREATED** - a job property was created. + + * **JOB_PROPERTY_ACTIVATED** - a job property was activated. + + * **JOB_PROPERTY_DEACTIVATED** - a job property was deactivated. + + * **JOB_PROPERTY_UPDATED** - a job property was updated. + + Additional context represents current and previous job property: + + ```json + + property: { + id: "string", + label: "string", + category: "string", + active: boolean, + visible: boolean, + required: boolean + } + + context: { + currentProperty: property, + previousProperty: property + } + + ``` + + * **JOB_PROPERTY_UPDATED_VALUES** - values in job property were updated. + Only actions from UI are audited within this event. + + Additional context represents updated current and previous values: + + ```json + + value: { + id: "string", + label: "string", + archived: boolean + } + + context: { + currentValues: [value], + previousValues: [value] + } + + ``` + + * **JOB_PROPERTY_UPDATED_VALUE** - a job property value was updated + (changed label, (un)archived). Only actions from Configuration API are + audited. These actions from UI are audited within + JOB_PROPERTY_UPDATED_VALUES event. + + Additional context represents updated current and previous value: + + ```json + + context: { + currentValue: value, + previousValue: value + } + + ``` + + * **JOB_PROPERTY_ADDED_VALUE** - a value was added to a job property. + Only actions from Configuration API are audited. These actions from UI + are audited within JOB_PROPERTY_UPDATED_VALUES event. + + Additional context represents added value: + + ```json + context: { + value: [value] + } + ``` + + * **JOB_PROPERTY_ARCHIVED_VALUE** - a job property value was archived. + Only actions from Configuration API are audited. These actions from UI + are audited within JOB_PROPERTY_UPDATED_VALUES event. + + Additional context represents archived value id: + + ```json + + context: { + valueId: "string" + } + + ``` + + * **JOB_PROPERTY_DEPENDENT_PROPERTIES_UPDATED** - job property + dependents were updated. + + Additional context represents updated dependent properties: + + ```json + + context: { + currentDependents: ["string"], + previousDependents: ["string"] + } + + ``` + + * **JOB_PROPERTY_DEPENDENT_VALUES_UPDATED** - job property dependent + values were updated. + + Additional context represents added or updated dependent values: + + ```json + + dependentValue: { + "parent": { + "id": "string", + "label": "string" + }, + "values": [value], + "valuesIds": ["string"] + } + + + context: { + dependentId: "string", + currentDependentValues: [dependentValue], + previousDependentValues: [dependentValue] + } + + ``` + + * **JOB_PROPERTIES_CHANGED** - job details has changed (job fields + edited on job) + + ```json + + fieldValue: { + "fieldId": "string", + "value": "string" + } + + context: { + "previousProperties": [fieldValue], + "currentProperties": [fieldValue] + } + + ``` + + * **POSITION_UPDATED** - when position is updated + + * **POSITION_DELETED** - when position is deleted + + * **POSITION_CREATED** - when position is created + + * **POSITION_ASSIGNED** - when position is assigned + + * **CANCEL_NOT_FILLED_POSITION** - when not filled position is cancelled + + ```json + + position: { + id: 'string', + positionId: 'string', + status: 'string', + openDate: 'date', + targetStartDate: 'date', + type: 'string' + } + + context: { + previous: position, + current: position + } + + ``` + + * **JOB_AD_CREATED** - when job ad is created + + ```json + + location: { + country: 'string' + countryCode: 'string' + regionCode: 'string' + region: 'string' + city: 'string' + address: 'string' + postalCode: 'string' + longitude: 'string' + latitude: 'string' + manual: boolean + } + + jobAd: { + id: 'string', + title: 'string', + visibility: 'string', + creatorId: 'string', + modifierId: 'string', + createDate: 'string', + location: location, + sections: 'string', + languageId: 'string', + applyUrl: 'string' + } + + context: { + jobAd: jobAd + } + + ``` + + * **JOB_AD_UPDATED** - when job ad is updated + + ```json + + context: { + previous: jobAd, + current: jobAd + } + + ``` + + * **JOB_AD_DELETED** - when job ad is deleted + + ```json + + context: { + jobAdId: 'string', + employeeId: 'string' + } + + ``` + + * **ONBOARDING_PROCESS_DELETED** - when an Onboarding Process is deleted + from SmartOnboard + + ```json + + context: { + deletionReason: 'string' + } + + ``` + + * **CUSTOMER_REPORT_DOWNLOADED** - when a report is downloaded + Additional context with ids of values: + + ```json + + context: { + reportFileId: 'string', + reportId: 'string' + } ``` + tags: + - audit + summary: List audit events + operationId: audit.get + security: + - key: [] + - oauth: + - audit_events_read + parameters: + - in: query + description: >- + ISO8601-formatted time boundaries for the event time, Format: + yyyy-MM-ddTHH:mm:ss.SSSZZ (example: 2023-01-21T12:50:02.594Z) + name: eventDateAfter + schema: + type: string + format: date-time + - in: query + description: >- + ISO8601-formatted time boundaries for the event time, Format: + yyyy-MM-ddTHH:mm:ss.SSSZZ (example: 2023-01-21T12:50:02.594Z) + name: eventDateBefore + schema: + type: string + format: date-time + - in: query + description: Name of the event + name: eventName + explode: true + schema: + type: array + items: + type: string + enum: + - USER_ACCOUNT_ACTIVATED + - USER_ACCOUNT_CREATED + - USER_ACCOUNT_DEACTIVATED + - USER_ACCOUNT_UPDATED + - USER_AUTHENTICATION_INVALID_CREDENTIALS + - USER_AUTHENTICATION_SUCCESS + - USER_PASSWORD_CHANGED + - USER_PASSWORD_RESET + - USER_ROLE_CHANGED + - USER_API_KEY_RENEWED + - CREDENTIALS_CREATED + - CREDENTIALS_CHANGED + - CREDENTIALS_REVOKED + - SEARCH + - CANDIDATE_PERSONAL_DATA_MODIFIED + - CANDIDATE_PROFILE_MODIFIED + - CANDIDATE_DELETED + - CANDIDATE_PROFILE_OPENED + - CANDIDATE_PROFILE_UPDATED_DUE_TO_MERGE + - CANDIDATE_DELETED_DUE_TO_MERGE + - CANDIDATE_TAGS_MODIFIED + - APPLICATION_PROPERTIES_UPDATED + - APPLICATION_SOURCE_MODIFIED + - ONBOARDING_STATUS_UPDATED + - JOB_APPLICATION_CREATED + - JOB_APPLICATION_STATE_MODIFIED + - JOB_DELETED + - HIRING_TEAM_MEMBER_ADDED + - HIRING_TEAM_MEMBER_REMOVED + - HIRING_TEAM_ROLE_UPDATED + - APPROVAL_DELEGATION_FROM_USER_CREATED + - APPROVAL_DELEGATION_FROM_USER_CANCELLED + - APPROVAL_DELEGATION_TO_USER_CREATED + - APPROVAL_DELEGATION_TO_USER_CANCELLED + - JOB_APPROVAL_REQUESTED + - JOB_APPROVAL_APPROVED + - JOB_APPROVAL_REJECTED + - JOB_APPROVAL_ABANDONED + - JOB_APPROVAL_STEP_APPROVED + - JOB_APPROVAL_STEP_REJECTED + - JOB_APPROVAL_STEP_SKIPPED + - JOB_APPROVAL_STEP_DELEGATED + - OFFER_APPROVAL_APPROVED + - OFFER_APPROVAL_REJECTED + - OFFER_APPROVAL_ABANDONED + - OFFER_APPROVAL_STEP_APPROVED + - OFFER_APPROVAL_STEP_REJECTED + - OFFER_APPROVAL_STEP_SKIPPED + - OFFER_APPROVAL_STEP_DELEGATED + - OFFER_ACCEPTED + - OFFER_DECLINED + - CANDIDATE_EEO_FILLED + - LRSC_CONSENT_GIVEN + - OAUTH_APPLICATION_ACCESS_GRANTED + - JOB_PROPERTY_CREATED + - JOB_PROPERTY_UPDATED + - JOB_PROPERTY_ACTIVATED + - JOB_PROPERTY_DEACTIVATED + - JOB_PROPERTY_UPDATED_VALUES + - JOB_PROPERTY_UPDATED_VALUE + - JOB_PROPERTY_ADDED_VALUE + - JOB_PROPERTY_ARCHIVED_VALUE + - JOB_PROPERTY_DEPENDENT_PROPERTIES_UPDATED + - JOB_PROPERTY_DEPENDENT_VALUES_UPDATED + - JOB_PROPERTIES_CHANGED + - POSITION_UPDATED + - POSITION_DELETED + - POSITION_CREATED + - POSITION_ASSIGNED + - CANCEL_NOT_FILLED_POSITION + - JOB_AD_CREATED + - JOB_AD_UPDATED + - JOB_AD_DELETED + - ONBOARDING_PROCESS_DELETED + - CUSTOMER_REPORT_DOWNLOADED + default: + - USER_ACCOUNT_ACTIVATED + - USER_ACCOUNT_CREATED + - USER_ACCOUNT_DEACTIVATED + - USER_ACCOUNT_UPDATED + - USER_AUTHENTICATION_INVALID_CREDENTIALS + - USER_AUTHENTICATION_SUCCESS + - USER_PASSWORD_CHANGED + - USER_PASSWORD_RESET + - USER_ROLE_CHANGED + - USER_API_KEY_RENEWED + - CREDENTIALS_CREATED + - CREDENTIALS_CHANGED + - CREDENTIALS_REVOKED + - SEARCH + - JOB_DELETED + - HIRING_TEAM_MEMBER_ADDED + - HIRING_TEAM_MEMBER_REMOVED + - HIRING_TEAM_ROLE_UPDATED + - APPROVAL_DELEGATION_FROM_USER_CREATED + - APPROVAL_DELEGATION_FROM_USER_CANCELLED + - APPROVAL_DELEGATION_TO_USER_CREATED + - APPROVAL_DELEGATION_TO_USER_CANCELLED + - JOB_APPROVAL_REQUESTED + - JOB_APPROVAL_APPROVED + - JOB_APPROVAL_REJECTED + - JOB_APPROVAL_ABANDONED + - JOB_APPROVAL_STEP_APPROVED + - JOB_APPROVAL_STEP_REJECTED + - JOB_APPROVAL_STEP_SKIPPED + - JOB_APPROVAL_STEP_DELEGATED + - OFFER_APPROVAL_APPROVED + - OFFER_APPROVAL_REJECTED + - OFFER_APPROVAL_ABANDONED + - OFFER_APPROVAL_STEP_APPROVED + - OFFER_APPROVAL_STEP_REJECTED + - OFFER_APPROVAL_STEP_SKIPPED + - OFFER_APPROVAL_STEP_DELEGATED + - OFFER_ACCEPTED + - OFFER_DECLINED + - CANDIDATE_PERSONAL_DATA_MODIFIED + - CANDIDATE_PROFILE_MODIFIED + - CANDIDATE_DELETED + - CANDIDATE_PROFILE_OPENED + - CANDIDATE_EEO_FILLED + - CANDIDATE_PROFILE_UPDATED_DUE_TO_MERGE + - CANDIDATE_DELETED_DUE_TO_MERGE + - CANDIDATE_TAGS_MODIFIED + - APPLICATION_PROPERTIES_UPDATED + - APPLICATION_SOURCE_MODIFIED + - ONBOARDING_STATUS_UPDATED + - JOB_APPLICATION_CREATED + - JOB_APPLICATION_STATE_MODIFIED + - LRSC_CONSENT_GIVEN + - OAUTH_APPLICATION_ACCESS_GRANTED + - JOB_PROPERTY_CREATED + - JOB_PROPERTY_UPDATED + - JOB_PROPERTY_ACTIVATED + - JOB_PROPERTY_DEACTIVATED + - JOB_PROPERTY_UPDATED_VALUES + - JOB_PROPERTY_UPDATED_VALUE + - JOB_PROPERTY_ADDED_VALUE + - JOB_PROPERTY_ARCHIVED_VALUE + - JOB_PROPERTY_DEPENDENT_PROPERTIES_UPDATED + - JOB_PROPERTY_DEPENDENT_VALUES_UPDATED + - JOB_PROPERTIES_CHANGED + - POSITION_UPDATED + - POSITION_DELETED + - POSITION_CREATED + - POSITION_ASSIGNED + - CANCEL_NOT_FILLED_POSITION + - JOB_AD_CREATED + - JOB_AD_UPDATED + - JOB_AD_DELETED + - ONBOARDING_PROCESS_DELETED + - CUSTOMER_REPORT_DOWNLOADED + - in: query + description: Type of the author who generated the event + name: authorType + explode: true + schema: + type: array + items: + type: string + enum: + - USER + - SUPPORT_USER + - SYSTEM + - CANDIDATE + default: + - USER + - SUPPORT_USER + - SYSTEM + - CANDIDATE + - in: query + description: Unique identifier of the author + name: authorId + schema: + type: string + - in: query + description: Type of the entity that the event is related to + name: entityType + explode: true + schema: + type: array + items: + type: string + enum: + - USER + - CANDIDATE + - APPLICATION + - OFFER + - JOB + - COMPANY + - JOB_PROPERTY + - JOB_AD + - CREDENTIAL + - REPORT_FILE + - ONBOARDING_PROCESS + default: + - USER + - CANDIDATE + - APPLICATION + - OFFER + - JOB + - COMPANY + - JOB_PROPERTY + - JOB_AD + - CREDENTIAL + - REPORT_FILE + - ONBOARDING_PROCESS + - in: query + description: Unique identifier of the entity that the event is related to + name: entityId + schema: + type: string + - in: query + description: Unique identifier for the next page of events + name: nextPageId + schema: + type: string + - in: query + description: Number of audit events to return. Maximum value is 100. + name: limit + schema: + type: integer + minimum: 1 + maximum: 100 + default: 10 + /candidates/{id}/tags: + parameters: + - $ref: '#/components/parameters/candidateId' + post: + responses: + '201': + description: Added tags + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateTags' + '400': + description: Adding too many tags + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: No permission to access this candidate + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Add new tags to a given candidate. It doesn't replace existing tags. + tags: + - candidates + summary: Add tags to a candidate + operationId: candidates.tags.add + security: + - key: [] + - oauth: + - candidates_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateTags' + description: Tags to be added. + required: true + get: + responses: + '200': + description: Candidate's tags + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateTags' + '403': + description: No permission to access this candidate + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - candidates + summary: Get tags for a candidate + operationId: candidates.tags.get + security: + - key: [] + - oauth: + - candidates_read + put: + responses: + '201': + description: Updated tags + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateTags' + '403': + description: No permission to access this candidate + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Update tags for a given candidate. It replaces all existing tags with + the new array provided. + tags: + - candidates + summary: Update tags for a candidate + operationId: candidates.tags.replace + security: + - key: [] + - oauth: + - candidates_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateTags' + description: Tags to be set. + required: true + delete: + responses: + '204': + description: Candidate's tags successfully deleted + '403': + description: No permission to access this candidate + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Delete tags for a given candidate. All tags associated with a candidate + are removed. + tags: + - candidates + summary: Delete tags for a candidate + operationId: candidates.tags.delete + security: + - key: [] + - oauth: + - candidates_manage + /candidates/{id}/onboardingStatus: + parameters: + - $ref: '#/components/parameters/candidateId' + get: + deprecated: true + responses: + '200': + description: Onboarding status + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardingStatus' + '403': + description: > + with codes: + + * **NO_ACCESS_TO_CANDIDATE** when Onboarding Status is not accesible + with assigned permissions. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **CANDIDATE_NOT_FOUND** when candidate not found, + + * **ONBOARDING_STATUS_NOT_ACTIVE** when Onboarding Status candidate + property is not activated, + + * **CANDIDATE_FIELDS_FEATURE_MISSING** when Onboarding Status is not + accessible. Required feature: 'Candidate Fields'. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Get Onboarding Status for a candidate. Please use `GET + /candidates/{id}/jobs/{jobId}/onboardingStatus` instead. + tags: + - candidates + summary: Get Onboarding Status for a candidate + operationId: candidates.onboarding.get + security: + - key: [] + - oauth: + - candidates_read + put: + deprecated: true + responses: + '204': + description: Onboarding status successfully updated. + '403': + description: > + with codes: + + * **NO_ACCESS_TO_CANDIDATE** when Onboarding Status is not editable + with assigned permissions. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **CANDIDATE_NOT_FOUND** when candidate not found, + + * **ONBOARDING_STATUS_NOT_ACTIVE** when Onboarding Status custom + candidate property is not activated, + + * **CANDIDATE_FIELDS_FEATURE_MISSING** when Onboarding Status is not + accessible. Required feature: 'Candidate Fields'. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Set Onboarding Status for a candidate. Please use `PUT + /candidates/{id}/jobs/{jobId}/onboardingStatus` instead. + tags: + - candidates + summary: Set Onboarding Status for a candidate + operationId: candidates.onboarding.update + security: + - key: [] + - oauth: + - candidates_manage + requestBody: + $ref: '#/components/requestBodies/OnboardingStatus' + /candidates/{id}/jobs/{jobId}/onboardingStatus: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + get: + responses: + '200': + description: Onboarding status. + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardingStatus' + '403': + description: > + with codes: + + * **NO_ACCESS_TO_CANDIDATE** when Onboarding Status is not + accessible with assigned permissions. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **CANDIDATE_NOT_FOUND** when candidate not found, + + * **JOB_NOT_FOUND** when candidate is not assigned to given job, + + * **ONBOARDING_STATUS_NOT_ACTIVE** when Onboarding Status candidate + property is not activated, + + * **CANDIDATE_FIELDS_FEATURE_MISSING** when Onboarding Status is not + accessible. Required feature: 'Candidate Fields'. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get Onboarding Status for a candidate associated with given job. + tags: + - candidates + summary: Get Onboarding Status for a candidate associated with given job + operationId: candidates.onboarding.getForJob + security: + - key: [] + - oauth: + - candidates_read + put: + responses: + '204': + description: Onboarding status successfully updated. + '403': + description: > + with codes: + + * **NO_ACCESS_TO_CANDIDATE** when Onboarding Status is not editable + with assigned permissions. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **CANDIDATE_NOT_FOUND** when candidate not found, + + * **JOB_NOT_FOUND** when candidate is not assigned to given job, + + * **ONBOARDING_STATUS_NOT_ACTIVE** when Onboarding Status candidate + property is not activated, + + * **CANDIDATE_FIELDS_FEATURE_MISSING** when Onboarding Status is not + accessible. Required feature: 'Candidate Fields'. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Sets Onboarding Status for a candidate associated with given job. + tags: + - candidates + summary: Sets Onboarding Status for a candidate associated with given job + operationId: candidates.onboarding.updateForJob + security: + - key: [] + - oauth: + - candidates_manage + requestBody: + $ref: '#/components/requestBodies/OnboardingStatus' + /candidates: + get: + responses: + '200': + description: Candidates matching search criteria + content: + application/json: + schema: + $ref: '#/components/schemas/Candidates' + headers: + Link: + schema: + type: string + description: > + Links to related resources, in the format defined by + + [RFC 5988](https://tools.ietf.org/html/rfc5988#section-5). + + This will include a link with relation type `next` to the + + next page (containing `pageId` query parameter), if there is a + next page. + '400': + description: > + with codes + + * **FIELDS_CRITERIA_SIZE_VIOLATED** when number of elements of query + param `propertyId` is not + equal to number of elements of query param `propertyValueId` + * **SOURCES_CRITERIA_SIZE_VIOLATED** when number of elements of + query param `sourceType` is not + equal to number of elements of query param `sourceSubType` or not + equal to number of elements of query param `sourceValueId` + * **SCREENING_QUESTIONS_CRITERIA_SIZE_VIOLATED** when number of + elements of query param `questionCategory` is not + equal to number of elements of query param `questionFieldId` or not + equal to number of elements of query param `questionFieldValueId` + * **ONBOARDING_STATUS_NOT_ACTIVE** when Onboarding Status candidate + property is not activated or user's + company does not have candidate property feature, but user has requested to search candidates by + onboardingStatus query parameter + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Only candidates matching all specified criteria and having at least one + job application are returned. + tags: + - candidates + summary: Search candidates + operationId: candidates.all + security: + - key: [] + - oauth: + - candidates_read + parameters: + - in: query + description: >- + keyword search, for more infromation see [SmartRecruiters + HelpCenter](https://help.smartrecruiters.com/Getting_Started/Platform/Searching_candidates_via_Candidate_API) + name: q + schema: + type: string + - in: query + description: number of elements to return. max value is 100 + name: limit + schema: + type: integer + minimum: 1 + maximum: 100 + default: 10 + - in: query + description: > + page identifier of elements to return + + + The `pageId` param can be used to fetch multiple page response, in + case + + the number of results is higher than max number of elements to + return (specified in the `limit` parameter). + + The `pageId` should not be present when requesting the first page of + results. + + The pageId of the following page is returned either in the + `nextPageId` property, or is available + + in the HTTP header `Link` value of relation type `next`. + + Example of the `Link` header: + + ``` + + ; + rel="next" + + ``` + name: pageId + schema: + type: string + - in: query + description: >- + job filter to display candidates who applied for a job [id]; can be + used repeatedly; + name: jobId + explode: true + schema: + type: array + items: + type: string + - in: query + description: >- + location keyword search which looks up a string in a candidate’s + location data; can be used repeatedly; case insensitive; e.g. Krakow + name: location + explode: true + schema: + type: array + items: + type: string + - in: query + description: >- + average rating filter to display candidates with a specific average + rating (integer); can be used repeatedly; e.g. 4 + name: averageRating + deprecated: true + explode: true + schema: + type: array + items: + type: integer + maximum: 5 + minimum: 1 + - in: query + description: >- + candidate’s status filter in a context of a job; can be used + repeatedly + name: status + explode: true + schema: + type: array + items: + type: string + enum: + - LEAD + - NEW + - IN_REVIEW + - INTERVIEW + - OFFERED + - HIRED + - REJECTED + - WITHDRAWN + - TRANSFERRED + - in: query + description: candidate’s consent status filter; can be used repeatedly + name: consentStatus + explode: true + schema: + type: array + items: + $ref: '#/components/schemas/ConsentStatus' + - in: query + description: >- + candidate’s sub-status filter in a context of a job. Works only in a + correlation with a set value for the "status" field. + name: subStatus + schema: + type: string + - in: query + description: >- + tag assigned to a candidate; can be used repeatedly; case + insensitive; e.g. fluent english + name: tag + explode: true + schema: + type: array + items: + type: string + - in: query + description: >- + ISO8601-formatted time boundaries for the candidate update time, + Format: yyyy-MM-ddTHH:mm:ss.SSSZZ + name: updatedAfter + schema: + type: string + format: date-time + - in: query + description: candidate's onboarding status + name: onboardingStatus + schema: + type: string + enum: + - READY_TO_ONBOARD + - ONBOARDING_SUCCESSFUL + - ONBOARDING_FAILED + - in: query + description: >- + candidate's property id (1-N). Currently it is only possible to + filter by single-select application fields. Other application field + type filtering is not possible. + name: propertyId + explode: true + schema: + type: array + items: + type: string + default: [] + - in: query + description: candidate's property value id (1-N) + name: propertyValueId + explode: true + schema: + type: array + items: + type: string + default: [] + - in: query + description: candidate's source type (1-N) + name: sourceType + explode: true + schema: + type: array + items: + type: string + default: [] + - in: query + description: candidate's source subtype (1-N) + name: sourceSubType + explode: true + schema: + type: array + items: + type: string + default: [] + - in: query + description: candidate's source value id (1-N) + name: sourceValueId + explode: true + schema: + type: array + items: + type: string + default: [] + - in: query + description: screening question category (1-N) + name: questionCategory + explode: true + schema: + type: array + items: + type: string + default: [] + - in: query + description: screening question field id (1-N) + name: questionFieldId + explode: true + schema: + type: array + items: + type: string + default: [] + - in: query + description: screening question field value id (1-N) + name: questionFieldValueId + explode: true + schema: + type: array + items: + type: string + default: [] + post: + responses: + '201': + description: Created candidate. + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateDetails' + '400': + description: > + with codes + + * **SOURCE_NOT_FOUND** when provided source does not exist, + + * **SUBTYPE_REQUIRED** when there are more sources and subtype + parameter is required + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + with code **PERMISSION_DENIED** when you are not permitted to create + candidate + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with code **SOURCE_TYPE_NOT_FOUND** when provided source type does + not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Create a new candidate and assign to a Talent Pool. + + + **Tracking candidate source** + + + When adding a new candidate, it's very important you track its source + appropriately. In order to associate a source with your app/integration, + add below object to a candidate body object for this endpoint: + + ``` + + { + "sourceDetails": { + "sourceTypeId": "string", + "sourceSubTypeId": "string", + "sourceId": "string" + } + } + + ``` + + **sourceTypeId** - it's a Source Type - available values can be found + using [get + /configuration/sources](https://developers.smartrecruiters.com/reference/configurationsourcetypes-1) + endpoint + + + **sourceSubTypeId** - it's a Source Subtype, an optional parameter - + available values can be found using [get + /configuration/sources](https://developers.smartrecruiters.com/reference/configurationsourcetypes-1) + endpoint + + + **sourceId** - it's a Source Id - available values for a given + sourceTypeId can be found using [get + /configuration/sources/:sourceTypeId/values](https://developers.smartrecruiters.com/reference/configurationsourcevaluesall-1) + endpoint + + + NOTE: Not defining the source will default to **API** source. + + + NOTE II: In case you can't find an appropriate source to track against + you can: + + * Create a custom source for each customer account separately on [this + admin + page](https://www.smartrecruiters.com/settings/configuration/custom-sources) + (you need to be logged in as an admin to the customer account in order + to view this page) + + * Request to + [partners@smartrecruiters.com](mailto:partners@smartrecruiters.com) + adding a standard source that will be available for all customers if + your app/integration is productised (available to all SmartRecruiters + customers) + tags: + - candidates + summary: Create a new candidate and assign to a Talent Pool + operationId: candidates.add + security: + - key: [] + - oauth: + - candidates_create + requestBody: + $ref: '#/components/requestBodies/CandidateInput' + /candidates/cv: + post: + responses: + '201': + description: Created candidate. + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateDetails' + '400': + description: > + with codes + + * **SOURCE_NOT_FOUND** when provided source does not exist, + + * **SUBTYPE_REQUIRED** when there are more sources and subtype + parameter is required, + + * **UNPARSABLE_RESUME** when provided resume cannot be parsed, e.g. + an image + + * **INCOMPLETE_RESUME** when provided resume does not contain all + required information to create a candidate. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + with code **PERMISSION_DENIED** when you are not permitted to create + candidate + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + **SOURCE_TYPE_NOT_FOUND** when provided source type does not exist. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Parse a resume, create a candidate and assign to a Talent Pool. + tags: + - candidates + summary: Parse a resume, create a candidate and assign to a Talent Pool. + operationId: candidates.resume.add + security: + - key: [] + - oauth: + - candidates_create + requestBody: + $ref: '#/components/requestBodies/Resume' + /candidates/consent-requests: + post: + responses: + '201': + description: > + Consent requests has been scheduled. + + + The response contains a list of results for each individual consent + request in the same order as in the request. + + + A single result `status` property value could be: + + * 202 - consent request successfully scheduled, + + * 403 - cannot request consent from candidate as no privacy policy + has been configured. + content: + application/json: + schema: + $ref: '#/components/schemas/ConsentRequestsResults' + description: > + Read more about GDPR tools on [SmartRecruiters + HelpCenter](https://help.smartrecruiters.com/GDPR/GDPR_Tools_for_Companies) + tags: + - candidates + summary: Request consent from multiple candidates + operationId: candidates.consent.request.batch + security: + - key: [] + - oauth: + - candidates_manage + requestBody: + required: true + $ref: '#/components/requestBodies/BatchConsentRequest' + /candidates/{id}/consent: + parameters: + - $ref: '#/components/parameters/candidateId' + get: + responses: + '200': + description: Candidate's latest consent status + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateConsentStatus' + '403': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get candidate consent status + tags: + - candidates + summary: Status of candidate consent + operationId: candidates.consent.status + security: + - key: [] + - oauth: + - candidates_read + /candidates/{id}/consents: + parameters: + - $ref: '#/components/parameters/candidateId' + get: + responses: + '200': + description: Candidate's consent decisions + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateConsentDecisions' + '403': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Depending on the consent approach which a customer chooses, the response + will either contain one candidates' + + consent decision - known as "single consent" - or contain one + candidates' consent broken out by the data scopes + + which the customer has subscribed to - such as SmartRecruit and + SmartCRM. This is referred to as "separated consent". + + Provided there is at least one pending consent request (without a + decision) for a candidate, the response + + contains a date and time of the most recent of such consent requests. + + + Read more about GDPR tools on [SmartRecruiters + HelpCenter](https://help.smartrecruiters.com/GDPR/GDPR_Tools_for_Companies) + tags: + - candidates + summary: Candidate consent decisions + operationId: candidates.consent.decisions + security: + - key: [] + - oauth: + - candidates_read + /candidates/{id}: + parameters: + - $ref: '#/components/parameters/candidateId' + get: + responses: + '200': + description: Candidate details + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateDetails' + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get details of a candidate + tags: + - candidates + summary: Get details of a candidate + operationId: candidates.get + security: + - key: [] + - oauth: + - candidates_read + delete: + responses: + '204': + description: Candidate successfully deleted + '403': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Candidate not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Delete candidate + tags: + - candidates + summary: Delete Candidate + operationId: candidates.delete + security: + - key: [] + - oauth: + - candidates_manage + patch: + responses: + '200': + description: Candidate updated + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateDetails' + '403': + description: >- + with code **PERMISSION_DENIED** when you are not permitted to update + candidate details + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code: + * **CANDIDATE_NOT_FOUND** when candidate not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Update candidate details + tags: + - candidates + summary: Update candidate personal information + operationId: candidates.update + security: + - key: [] + - oauth: + - candidates_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PersonalDetails' + description: Candidate personal information + /candidates/{id}/attachments: + parameters: + - $ref: '#/components/parameters/candidateId' + get: + deprecated: true + responses: + '200': + description: Candidate's attachments + content: + application/json: + schema: + $ref: '#/components/schemas/Attachments' + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Attachment file access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get list of candidate's attachments. + tags: + - candidates + summary: Get list candidate's attachments. + operationId: candidates.attachments.list + security: + - key: [] + - oauth: + - candidates_read + post: + deprecated: true + responses: + '201': + description: Candidate's attachment + content: + application/json: + schema: + $ref: '#/components/schemas/Attachment' + '400': + description: > + with codes: + + * **FILE_ALREADY_EXIST** when file aleady exists, + + * **INVALID_FILE** when file extension not allowed, corrupted file + or wrong file type. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: >- + with code **ATTACHMENT_LIMIT_EXCEEDED** when no more files can be + added to candidate. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Attach files to a candidate. + tags: + - candidates + summary: Attach files to a candidate. + operationId: candidates.attachments.add + security: + - key: [] + - oauth: + - candidates_create + requestBody: + content: + multipart/form-data: + schema: + type: object + properties: + attachmentType: + description: Type of attachment you want to upload. + type: string + enum: + - GENERIC_FILE + - RESUME + - COVER_LETTER + default: GENERIC_FILE + file: + description: The file to upload. + type: string + format: binary + required: + - attachmentType + /candidates/{id}/attachments/{attachmentId}: + parameters: + - $ref: '#/components/parameters/candidateId' + get: + deprecated: true + responses: + '200': + description: Attachment content + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: with code FILE_NOT_FOUND when file does not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get a candidate's attachment. + tags: + - candidates + summary: Get a candidate's attachment. + operationId: candidates.attachments.get + security: + - key: [] + - oauth: + - candidates_read + parameters: + - in: path + description: Identifier of an attachment + name: attachmentId + required: true + schema: + type: string + /candidates/{id}/jobs/{jobId}/attachments: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + get: + responses: + '200': + description: Candidate's attachments in context of given job. + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateAttachmentsForJob' + '403': + description: >- + with code **PERMISSION_DENIED** when you are not permitted to view + candidate attachments in context of given job. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: >- + with code **JOB_NOT_FOUND** when candidate is not assigned to given + job. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get list of candidate's attachments in context of given job. + tags: + - candidates + summary: Get list of candidate's attachments in context of given job. + operationId: candidates.attachments.listForJob + security: + - key: [] + - oauth: + - candidates_read + post: + responses: + '201': + description: Candidate's attachment in context of given job. + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateAttachmentForJob' + '400': + description: > + with codes: + + * **FILE_ALREADY_EXIST** when file already exists, + + * **INVALID_FILE** when file extension not allowed, corrupted file + or wrong file type. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + with code **PERMISSION_DENIED** when you are not permitted to add + file to candidate in context of given job. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: >- + with code **JOB_NOT_FOUND** when candidate is not assigned to given + job. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: >- + with code **ATTACHMENT_LIMIT_EXCEEDED** when no more files can be + added to candidate in context of given job. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Attach file to candidate in context of given job. + tags: + - candidates + summary: Attach file to candidate in context of given job. + operationId: candidates.attachments.addForJob + security: + - key: [] + - oauth: + - candidates_create + requestBody: + content: + multipart/form-data: + schema: + type: object + properties: + attachmentType: + description: Type of attachment you want to upload. + type: string + enum: + - GENERIC_FILE + - RESUME + - COVER_LETTER + default: GENERIC_FILE + file: + description: File to upload. + type: string + format: binary + required: + - attachmentType + /candidates/attachments/{attachmentId}: + parameters: + - $ref: '#/components/parameters/attachmentId' + get: + responses: + '200': + description: Candidate's Attachment + '403': + description: > + with codes: + + * **PERMISSION_DENIED** when you are not permitted to download + attachment, + + * **MALWARE_DETECTED** when file has been marked as malicious. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: with code **FILE_NOT_FOUND** when attachment does not exist. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get candidate's attachment. + tags: + - candidates + summary: Get candidate's attachment. + operationId: candidates.attachments.getForJob + security: + - key: [] + - oauth: + - candidates_read + delete: + responses: + '204': + description: Attachment successfully deleted + '403': + description: >- + with code **PERMISSION_DENIED** when you are not permitted to delete + attachment. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: with code **FILE_NOT_FOUND** when attachment does not exist. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Delete attachment. + tags: + - candidates + summary: Delete attachment. + operationId: candidates.attachments.deleteForJob + security: + - key: [] + - oauth: + - candidates_manage + /candidates/{id}/jobs/{jobId}/status: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + put: + responses: + '204': + description: '' + '400': + description: > + with codes + + * **NO_REASON_SUPPORT_FOR_STATUS** when reason is not available for + given status (availably only for REJECTED and WITHDRAWN) + + * **REASON_NOT_FOUND** when given reason does not exist + + * **REQUIRED_SUB_STATUS_OMITTED** when there is a required sub + status before the status you want to move a candidate to + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with codes + + * **PERMISSION_DENIED** when you are not permitted to update + candidate's status + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Candidate is not assigned to given job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Update a candidate's status + tags: + - candidates + summary: Update a candidate's status + operationId: candidates.status.update + security: + - key: [] + - oauth: + - candidates_manage + requestBody: + $ref: '#/components/requestBodies/CandidateStatus' + /candidates/{id}/status: + parameters: + - $ref: '#/components/parameters/candidateId' + put: + deprecated: true + responses: + '204': + description: '' + '400': + description: > + with codes + + * **NO_REASON_SUPPORT_FOR_STATUS** when reason is not available for + given status (availably only for REJECTED and WITHDRAWN) + + * **REASON_NOT_FOUND** when given reason does not exist + + * **REQUIRED_SUB_STATUS_OMITTED** when there is a required sub + status before the status you want to move a candidate to + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with codes + + * **PERMISSION_DENIED** when you are not permitted to update + candidate's status + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Update a candidate's status on primary assignment. Please use `PUT + /candidates/{id}/jobs/{jobId}/status` instead. + tags: + - candidates + summary: Update a candidate's status on primary assignment + operationId: candidates.status.updatePrimary + security: + - key: [] + - oauth: + - candidates_manage + requestBody: + $ref: '#/components/requestBodies/CandidateStatus' + /candidates/{id}/status/history: + parameters: + - $ref: '#/components/parameters/candidateId' + get: + deprecated: true + responses: + '200': + description: Candidate's status history + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateStatusHistoryList' + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Get candidate's status history. Please use `GET + /candidates/{id}/jobs/{jobId}/status/history` instead. + tags: + - candidates + summary: Get candidate's status history + operationId: candidates.status.history.get + security: + - key: [] + - oauth: + - candidates_read + - candidate_status_read + /candidates/{id}/jobs/{jobId}/status/history: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + get: + responses: + '200': + description: Candidate's status history + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateStatusHistoryList' + '403': + description: > + with code **NO_ACCESS_TO_CANDIDATE** when not permitted to see this + candidate + + with code **NO_ACCESS_TO_JOB** when not permitted to see this + candidate in context of given job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with code **CANDIDATE_NOT_FOUND** when candidate not found + + with code **JOB_NOT_FOUND** when candidate is not assigned to given + job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get candidate's status history for a candidate's job + tags: + - candidates + summary: Get candidate's status history for a candidate's job + operationId: candidates.status.history.getForJob + security: + - key: [] + - oauth: + - candidates_read + - candidate_status_read + /candidates/{id}/jobs/{jobId}/source: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + put: + responses: + '204': + description: '' + '400': + description: > + with codes: + + * **INVALID_SOURCE_TYPE** when provided type does not exist, + + * **SUBTYPE_REQUIRED** when there are more sources and subtype + parameter is required, + + * **INVALID_SOURCE** when source id does not exist in provided type. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Candidate is not assigned to given job. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Update a candidate's source + tags: + - candidates + summary: Update a candidate's source + operationId: candidates.source.update + security: + - key: [] + - oauth: + - candidates_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateSource' + description: Candidate source to be set + required: true + /candidates/{id}/properties: + parameters: + - $ref: '#/components/parameters/candidateId' + get: + deprecated: true + responses: + '200': + description: Candidate property values. + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateProperties' + '403': + description: Candidate properties access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code **CANDIDATE_NOT_FOUND** when candidate does not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: | + Please use `GET /candidates/{id}/jobs/{jobId}/properties` instead. + Returns + ``` + {} + ``` + when there is no value set for a candidate property. + tags: + - candidates + summary: Get candidate property values for a candidate + operationId: candidates.properties.get + security: + - key: [] + - oauth: + - candidates_read + parameters: + - in: query + description: context for candidate properties to display + name: context + schema: + type: string + enum: + - PROFILE + - OFFER_FORM + - HIRE_FORM + - OFFER_APPROVAL_FORM + /candidates/{id}/jobs/{jobId}/properties: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + get: + responses: + '200': + description: Candidate property values. + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateProperties' + '403': + description: Candidate properties access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with code **JOB_NOT_FOUND** when candidate is not assigned to given + job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: | + Returns + ``` + {} + ``` + when there is no value set for a candidate property. + tags: + - candidates + summary: Get candidate property values for a candidate's job + operationId: candidates.properties.getForJob + security: + - key: [] + - oauth: + - candidates_read + parameters: + - in: query + description: context for candidate properties to display + name: context + schema: + type: string + enum: + - PROFILE + - OFFER_FORM + - HIRE_FORM + - OFFER_APPROVAL_FORM + put: + responses: + '204': + description: Properties successfully updated. + '400': + description: > + with codes + + * **COUNTRY_NOT_FOUND** when candidate property of COUNTRY type and + country with provided code does not exist, + + * **REGION_NOT_FOUND** when candidate property of REGION type and + region with provided code does not exist, + + * **USER_NOT_FOUND** when candidate property of USER type and user + with provided id does not exist, + + * **CURRENCY_NOT_FOUND** when candidate property of CURRENCY type + and currency with provided code does not exist, + + * **VALUE_NOT_FOUND** when candidate property of SINGLE_SELECT type + and value with provided id does not exist, + + * **INVALID_TEXT_FORMAT** when candidate property of TEXT type and + its value contains forbidden characters + + * **INVALID_EMAIL_FORMAT** when candidate property of TEXT type + (with enabled email validation) and its value contains invalid email + address + + * **INVALID_TEXT_PATTERN_FORMAT** when candidate property of TEXT + type (with enabled custom text pattern validation) and its value + contains value that does not match the pattern + + * **INACCESSIBLE_FIELD** when candidate property cannot be set due + to its own configuration + + * **DUPLICATE_PROPERTIES** when request contains multiple candidate + properties with the same id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Candidate properties access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes + + * **PROPERTY_NOT_FOUND** when one of the provided candidate + properties does not exist + + * **JOB_NOT_FOUND** when candidate is not assigned to given job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Set candidate properties values for the candidate's job + + + Below you can find a list of value examples, dependent on different + + candidate property types. + + + ### BOOLEAN + + + ``` + + [{ "id": "propertyId", "value": true }] + + ``` + + + Value has to be `true` or `false`. + + + ### COUNTRY + + + ``` + + [{ "id": "propertyId", "value": "us" }] + + ``` + + + Value has to be lowercase string in ISO 3166-1 alpha-2 format. + + + ### CURRENCY + + + ``` + + [{ "id": "propertyId", + "value": { + "code": "GBP", + "value": 23232 + } + }] + ``` + + + Code of value is a currency code in ISO 4217 format. + + + ### DATE + + + ``` + + [{ "id": "propertyId", "value": "2015-11-17T23:00:00.000Z" }] + + ``` + + + ### NUMBER, PERCENT + + + ``` + + [{ "id": "propertyId", "value": 42 }] + + ``` + + + ### REGION + + + ``` + + [{ "id": "propertyId", "value": "us-wa" }] + + ``` + + + Value has to be lowercase string in ISO 3166-2 compatible format. + + + ### SINGLE_SELECT + + + ``` + + [{ "id": "propertyId", "value": "f6fe768f-b5e6-4794-9938-c2f42ab0a572" + }] + + ``` + + + Value has to be an id of candidate property value (provided by `GET + + /configuration/candidate-properties/{propertyId}/values`). + + + ### TEXT + + + ``` + + [{ "id": "propertyId", "value": "Example text" }] + + ``` + + + ### USER + + + ``` + + [{ "id": "propertyId", "value": "50fe861de4b00265edec6775" }] + + ``` + + + Value has to be a valid user id + + + ### Resetting a value + + + To reset a value for any of the above types, please pass: + + + ``` + + [{"id": "propertyId"}] + + ``` + tags: + - candidates + summary: Add/update candidate properties values + operationId: candidates.properties.values.batchUpdateForJob + security: + - key: [] + - oauth: + - candidates_manage + requestBody: + $ref: '#/components/requestBodies/BatchCandidatePropertyValue' + /candidates/{id}/properties/{propertyId}: + parameters: + - $ref: '#/components/parameters/candidateId' + put: + deprecated: true + responses: + '204': + description: Property successfully updated. + '400': + description: > + with codes + + * **COUNTRY_NOT_FOUND** when candidate property of COUNTRY type and + country with provided code does not exist, + + * **REGION_NOT_FOUND** when candidate property of REGION type and + region with provided code does not exist, + + * **USER_NOT_FOUND** when candidate property of USER type and user + with provided id does not exist, + + * **CURRENCY_NOT_FOUND** when candidate property of CURRENCY type + and currency with provided code does not exist, + + * **INVALID_TEXT_FORMAT** when candidate property of TEXT type and + its value contains forbidden characters + + * **INVALID_EMAIL_FORMAT** when candidate property of TEXT type + (with enabled email validation) and its value contains invalid email + address + + * **INVALID_TEXT_PATTERN_FORMAT** when candidate property of TEXT + type (with enabled custom text pattern validation) and its value + contains value that does not match the pattern + + * **INACCESSIBLE_FIELD** when candidate property cannot be set due + to its own configuration + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Candidate properties access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with code **PROPERTY_NOT_FOUND** when candidate property does not + exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Please use `PUT /candidates/{id}/jobs/{jobId}/properties` instead. Set a + candidate property value for the candidate. + + Below you can find a list of value examples, dependent on different + candidate property types. + + * **BOOLEAN** + + ``` + + { "value": true } + + ``` + + Value has to be `true` or `false`. + + * **COUNTRY** + + ``` + + { "value": "us" } + + ``` + + Value has to be lowercase string in ISO 3166-1 alpha-2 format. + + * **CURRENCY** + + ``` + + { + "value": { + "code": "GBP", + "value": 23232 + } + } + + ``` + + Code of value is a currency code in ISO 4217 format. + + * **DATE** + + ``` + + { "value": "2015-11-17T23:00:00.000Z" } + + ``` + + * **NUMBER, PERCENT** + + ``` + + { "value": 42 } + + ``` + + * **REGION** + + ``` + + { "value": "us-wa" } + + ``` + + Value has to be lowercase string in ISO 3166-2 compatible format. + + * **SINGLE_SELECT** + + ``` + + { "value": "f6fe768f-b5e6-4794-9938-c2f42ab0a572" } + + ``` + + Value has to be an id of candidate property value (provided by GET + /configuration/candidate-properties/{propertyId}/values). + + * **TEXT** + + ``` + + { "value": "Example text" } + + ``` + + * **USER** + + ``` + + { "value": "50fe861de4b00265edec6775" } + + ``` + + Value has to be a valid user id + + + To reset a value for any of the above types, please pass + + ``` + + {} + + ``` + tags: + - candidates + summary: Add/update candidate property value + operationId: candidates.properties.values.update + security: + - key: [] + - oauth: + - candidates_manage + parameters: + - in: path + description: Identifier of a Candidate Property + name: propertyId + required: true + schema: + type: string + requestBody: + $ref: '#/components/requestBodies/CandidatePropertyInputValue' + /candidates/{id}/jobs/{jobId}/properties/{propertyId}: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + put: + deprecated: true + responses: + '204': + description: Property successfully updated. + '400': + description: > + with codes + + * **COUNTRY_NOT_FOUND** when candidate property of COUNTRY type and + country with provided code does not exist, + + * **REGION_NOT_FOUND** when candidate property of REGION type and + region with provided code does not exist, + + * **USER_NOT_FOUND** when candidate property of USER type and user + with provided id does not exist, + + * **CURRENCY_NOT_FOUND** when candidate property of CURRENCY type + and currency with provided code does not exist, + + * **VALUE_NOT_FOUND** when candidate property of SINGLE_SELECT type + and value with provided id does not exist, + + * **INVALID_TEXT_FORMAT** when candidate property of TEXT type and + its value contains forbidden characters + + * **INVALID_EMAIL_FORMAT** when candidate property of TEXT type + (with enabled email validation) and its value contains invalid email + address + + * **INVALID_TEXT_PATTERN_FORMAT** when candidate property of TEXT + type (with enabled custom text pattern validation) and its value + contains value that does not match the pattern + + * **INACCESSIBLE_FIELD** when candidate property cannot be set due + to its own configuration + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Candidate properties access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes + * **PROPERTY_NOT_FOUND** when candidate property does not exist + * **JOB_NOT_FOUND** when candidate is not assigned to given job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: | + Please use `PUT /candidates/{id}/jobs/{jobId}/properties` instead. + + Set a candidate property value for the candidate. + + Below you can find a list of value examples, dependent on different + candidate property types. + + ### BOOLEAN + + ``` + { "value": true } + ``` + + Value has to be `true` or `false`. + + ### COUNTRY + + ``` + { "value": "us" } + ``` + + Value has to be lowercase string in ISO 3166-1 alpha-2 format. + + ### CURRENCY + + ``` + { + "value": { + "code": "GBP", + "value": 23232 + } + } + ``` + + Code of value is a currency code in ISO 4217 format. + + ### DATE + + ``` + { "value": "2015-11-17T23:00:00.000Z" } + ``` + + ### NUMBER, PERCENT + + ``` + { "value": 42 } + ``` + + ### REGION + + ``` + { "value": "us-wa" } + ``` + + Value has to be lowercase string in ISO 3166-2 compatible format. + + ### SINGLE_SELECT + + ``` + { "value": "f6fe768f-b5e6-4794-9938-c2f42ab0a572" } + ``` + + Value has to be an id of candidate property value (provided by `GET + /configuration/candidate-properties/{propertyId}/values`). + + ### TEXT + + ``` + { "value": "Example text" } + ``` + + ### USER + + ``` + { "value": "50fe861de4b00265edec6775" } + ``` + + Value has to be a valid user id + + ### Resetting a value + + To reset a value for any of the above types, please pass: + + ``` + {} + ``` + tags: + - candidates + summary: Add/update candidate property value + operationId: candidates.properties.values.updateForJob + security: + - key: [] + - oauth: + - candidates_manage + parameters: + - in: path + description: Identifier of a Candidate Property + name: propertyId + required: true + schema: + type: string + requestBody: + $ref: '#/components/requestBodies/CandidatePropertyInputValue' + /candidates/{id}/jobs/{jobId}/screening-answers: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + get: + responses: + '200': + description: Candidate screening question answers for a candidate's job + content: + application/json: + schema: + $ref: '#/components/schemas/ScreeningAnswers' + example: + totalFound: 10 + content: + - id: 0e91d24a-d85b-487d-99ef-eeaca7277d77 + type: radio + category: drivingCurrent + name: Driving Current + label: Do you have a current driver's license? + records: + - fields: + - id: value + label: Value + values: + - id: '0' + label: 'No' + - id: a00c06fb-6693-4138-a005-57c92ab796b6 + type: textarea + category: 04f8fac1-8799-47ef-af54-7dcc4cd10bb9 + name: Free text question + label: Free text question + records: + - fields: + - id: value + label: Value + values: + - id: Long text answer for free text questions + label: Long text answer for free text questions + - id: a98ba616-d7ed-43e5-b5b5-23a9eca031e3 + type: checkbox + category: ba9acad1-71b3-42a1-a059-c05e1bbbc301 + name: Checkbox question + label: Checkbox question + records: + - fields: + - id: confirm + label: Checkbox question + values: + - id: '1' + label: Confirmed + - id: eb93fc47-6f72-4d97-a60e-a265f8621e84 + type: checkbox + category: 20ef7ecb-09c4-4afd-80fc-6a2700a1c3ba + name: Legacy acknowledgment question + label: Legacy acknowledgment question - replaced by checkbox + records: + - fields: + - id: confirm + label: >- + Legacy acknowledgment question - replaced by + checkbox + values: + - id: '1' + label: Confirmed + - id: 40bc2e3b-fd1c-47e8-b514-2365fc705447 + type: eeo + category: eeoInformation + name: EEO - Race and Gender + label: >- + Gender, Race and Ethnicity + [(definitions)](https://smartrecruiters.com/oneclick/static/html/en/eeoGeneral.html) + records: + - fields: + - id: gender + label: Gender + values: + - id: '0' + label: Male + - id: ethnicity + label: Race/Ethnicity + values: + - id: '6' + label: Prefer not to answer + - id: f9ffb0eb-c8e7-4c18-bfa3-7fb22af7da03 + type: currency + category: b2e9b169-77a6-4425-b82a-8dd80c84005b + name: Currency question + label: Currency question + records: + - fields: + - id: amount + label: Value + values: + - id: '1234' + label: '1234' + - id: 910ceed4-a708-4c22-8c10-f53e1b053a7d + type: select + category: 445c45ae-8e5a-48c6-9e05-0846d35bfa6d + name: Multiple choice dropdown + label: Multiple choice dropdown + records: + - fields: + - id: value + label: Value + values: + - id: d6c2c580-5f51-4960-a6e5-a8bc8849f35c + label: third value + - id: 5e9cc528-9640-454d-8ef6-19bd06ce2ea9 + label: second value + - id: 10a341a3-b8ff-4121-9dee-75b442e64f00 + label: first value + - id: 1549f34c-fdda-459a-8c01-be8ab6cef19f + type: languages + category: languages + name: Languages + label: Languages + records: + - fields: + - id: lang + label: Language + values: + - id: English + label: English + - id: level + label: Proficiency level + values: + - id: '2' + label: Advanced + - fields: + - id: lang + label: Language + values: + - id: Spanish + label: Spanish + - id: level + label: Proficiency level + values: + - id: '0' + label: Beginner + - fields: + - id: lang + label: Language + values: + - id: French + label: French + - id: level + label: Proficiency level + values: + - id: '1' + label: Intermediate + - id: 2bb9faa5-dbe9-42dc-9c00-381dddb0abb6 + type: work_shifts + category: preferredWorkShifts + name: Work Shifts + label: What are your preferred work shifts? + records: + - fields: + - id: day + label: Day + values: + - id: '2' + label: Weekdays + - id: from + label: From + values: + - id: '8' + label: 08:00 AM + - id: to + label: To + values: + - id: '16' + label: 04:00 PM + - fields: + - id: day + label: Day + values: + - id: '2' + label: Weekdays + - id: from + label: From + values: + - id: '10' + label: 10:00 AM + - id: to + label: To + values: + - id: '14' + label: 02:00 PM + - id: 6c0ed428-f167-4ab0-967d-564560617e7b + type: text + category: yourName + name: Your Name + label: Your Name + records: + - fields: + - id: value + values: + - id: John + label: John + '403': + description: Screening Question Answers access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Screening Question Answers not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Returns candidate screening question answers for a candidate's job. + Returns an empty array when there is no screening answers for given + candidate's job. + + + UUID in question category indicates custom question. Other value + indicates predefined library question. + + + In order to create human readable format of answers please use label + properties. Ignore labels for answers with single field. + + Based on labels from included example you can get following text: + + + ```text + + Do you have a current driver's license? + - No + + Free text question + - Long text answer for free text questions + + Checkbox question + - Confirmed + + Legacy acknowledgment question - replaced by checkbox + - Confirmed + + Gender, Race and Ethnicity + [(definitions)](https://smartrecruiters.com/oneclick/static/html/en/eeoGeneral.html) + - Gender: Male + - Race/Ethnicity: Prefer not to answer + + Currency question + - 1234 + + Multiple choice dropdown + - third value, second value, first value + + Languages + 1) + - Language: English + - Proficiency level: Advanced + 2) + - Language: Spanish + - Proficiency level: Beginner + 3) + - Language: French + - Proficiency level: Intermediate + + What are your preferred work shifts? + + 1) + - Day: Weekdays + - From: 08:00 AM + - To: 04:00 PM + 2) + - Day: Weekdays + - From: 10:00 AM + - To: 02:00 PM + + Your Name + - John + ``` + tags: + - candidates + summary: Get candidate screening answers for a candidate's job + operationId: candidates.screening-answers.get + security: + - key: [] + - oauth: + - candidates_read + /jobs/{jobId}/candidates: + parameters: + - $ref: '#/components/parameters/jobId' + post: + responses: + '201': + description: Created candidate. + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateDetails' + '400': + description: > + with codes + + * **SOURCE_NOT_FOUND** when provided source does not exist, + + * **SUBTYPE_REQUIRED** when there are more sources and subtype + parameter is required + + * **INVALID_SOURCE_ID** when invalid source ID provided for a + specified sourceIdType. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: | + with code **PERMISSION_DENIED** when job access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + with code **PERMISSION_DENIED** when you are not permitted to create + candidate + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with code **SOURCE_TYPE_NOT_FOUND** when provided source type does + not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Create a new candidate and assign to a job. + + + **Tracking candidate source** + + + When adding a new candidate, it's very important you track its source + appropriately. In order to associate a source with your app / + integration, add the below object to a candidate body object for this + endpoint: + + ``` + + { + "sourceDetails": { + "sourceTypeId": "string", + "sourceSubTypeId": "string", + "sourceId": "string" + } + } + + ``` + + **sourceTypeId** - it's a Source Type - available values can be found + using [get + /configuration/sources](https://developers.smartrecruiters.com/reference/configurationsourcetypes-1) + endpoint + + + **sourceSubTypeId** - it's a Source Subtype, an optional parameter - + available values can be found using [get + /configuration/sources](https://developers.smartrecruiters.com/reference/configurationsourcetypes-1) + endpoint + + + **sourceId** - it's a Source Id - available values for a given + sourceTypeId can be found using [get + /configuration/sources/:sourceTypeId/values](https://developers.smartrecruiters.com/reference/configurationsourcevaluesall-1) + endpoint + + + NOTE: Not defining the source will default to **API** source. + + + NOTE II: In case you can't find an appropriate source to track against + you can: + + * Create a custom source for each customer account separately on [this + admin + page](https://www.smartrecruiters.com/settings/configuration/custom-sources\) + (you need to be logged in as an admin to the customer account in order + to view this page) + + * Request to + [partners@smartrecruiters.com](mailto:partners@smartrecruiters.com) + adding a standard source that will be available for all customers if + your app / integration is productised (available to all SmartRecruiters + customers) + tags: + - candidates + summary: Create a new candidate and assign to a job + operationId: candidates.addToJob + security: + - key: [] + - oauth: + - candidates_create + requestBody: + $ref: '#/components/requestBodies/CandidateInput' + /jobs/{jobId}/candidates/cv: + parameters: + - $ref: '#/components/parameters/jobId' + post: + responses: + '201': + description: Created candidate. + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateDetails' + '400': + description: > + with codes + + * **SOURCE_NOT_FOUND** when provided source does not exist, + + * **SUBTYPE_REQUIRED** when there are more sources and subtype + parameter is required + + * **UNPARSABLE_RESUME** when provided resume cannot be parsed, e.g. + an image + + * **INCOMPLETE_RESUME** when provided resume does not contain all + required information to create a candidate. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Job access denied. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + with code **PERMISSION_DENIED** when you are not permitted to create + candidate + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + **SOURCE_TYPE_NOT_FOUND** when provided source type does not exist. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Parse a resume, create a candidate and assign to a job. + tags: + - candidates + summary: Parse a resume, create a candidate and assign to a job. + operationId: candidates.resume.addToJob + security: + - key: [] + - oauth: + - candidates_create + requestBody: + $ref: '#/components/requestBodies/Resume' + /candidates/{id}/jobs/{jobId}: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + get: + responses: + '200': + description: Candidate's application + content: + application/json: + schema: + $ref: '#/components/schemas/Application' + '403': + description: Permission denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Application not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get details of a candidate's application to a job + tags: + - candidates + summary: Get details of a candidate's application to a job + operationId: candidates.getApplication + security: + - key: [] + - oauth: + - candidates_read + /configuration/company: + get: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CompanyConfiguration' + description: Get all information about your company. + tags: + - configuration + summary: Get company information + operationId: configuration.company.my + security: + - key: [] + - oauth: + - company_read + - configuration_read + /configuration/job-properties: + get: + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JobPropertyDefinitionList' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get a list of available job properties. + tags: + - configuration + summary: Get a list of available job properties + operationId: configuration.job-properties.all + security: + - key: [] + - oauth: + - configuration_read + post: + responses: + '201': + description: Created job property + content: + application/json: + schema: + $ref: '#/components/schemas/JobPropertyDefinition' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + With codes: + + * *JOB_PROPERTY_LIMIT_EXCEEDED* when job properties limit is + reached, + + * *DEFINITION_NAME_IS_NOT_ALLOWED* when job property name is + restricted. + description: Creates a job property + tags: + - configuration + summary: Create a job property + operationId: configuration.job-properties.create + security: + - key: [] + - oauth: + - configuration_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/JobPropertyDefinitionCreationRequest' + description: job property to be created + /configuration/job-properties/{id}: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + get: + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JobPropertyDefinition' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Job property not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get job property by id + tags: + - configuration + summary: Get job property by id + operationId: configuration.job-properties.get + security: + - key: [] + - oauth: + - configuration_read + patch: + responses: + '200': + description: Updated job property + content: + application/json: + schema: + $ref: '#/components/schemas/JobPropertyDefinition' + '400': + description: Job property is not editable + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Job property not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + With code: + + * *DEFINITION_NAME_IS_NOT_ALLOWED* when job property name is + restricted. + description: Updates a job property. + tags: + - configuration + summary: Update a job property + operationId: configuration.job-properties.update + security: + - key: [] + - oauth: + - configuration_manage + requestBody: + $ref: '#/components/requestBodies/JSONPatch' + /configuration/job-properties/{id}/translations: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + patch: + security: + - key: [] + - oauth: + - configuration_manage + responses: + '204': + description: Translations accepted + '400': + description: | + with codes + * *PROPERTY_INVALID* - when value contains invalid characters + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes + * *JOB_PROPERTY_NOT_FOUND* - when job property not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: >- + There is more than one translation with the same language in the + input + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: 'Invalid input: missing required data, invalid format' + description: Submit a job property's translations to different languages + tags: + - configuration + summary: Add a job property's translations + operationId: configuration.job-properties.translations.patch + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/LabelTranslations' + required: true + /configuration/job-properties/{id}/values: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + get: + parameters: + - $ref: '#/components/parameters/language' + - $ref: '#/components/parameters/pageId' + - $ref: '#/components/parameters/pageSize' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JobPropertyValueDefinitionList' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Job property not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get available job property values. + tags: + - configuration + summary: Get available job property values + operationId: configuration.job-properties.values.get + security: + - key: [] + - oauth: + - configuration_read + post: + responses: + '201': + description: Created job property value + content: + application/json: + schema: + $ref: '#/components/schemas/JobPropertyValueDefinition' + '400': + description: > + when value is invalid with codes: + + * *VALUES_NOT_ALLOWED* when values are not allowed (e.g. for free + text fields) + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: When job property not found. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: When job property value with given label already exists. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + when value id is invalid or with codes: + + * *ACTIVE_VALUES_LIMIT_REACHED* when limit of active job property + values is reached + + * *VALUES_LIMIT_REACHED* when the limit of job property values + (active and inactive) is reached + + * *VALUE_LABEL_IS_BLANK* when provided label is blank + + * *VALUE_LABEL_IS_INVALID* when provided label is not valid, e.g. + contains leading/trailing whitespaces + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Creates a job property value. + tags: + - configuration + summary: Create a job property value + operationId: configuration.job-properties.values.create + security: + - key: [] + - oauth: + - configuration_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/JobPropertyValueDefinition' + description: job property object to be created + /configuration/job-properties/{id}/values/{valueId}: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + - $ref: '#/components/parameters/jobPropertyValueId' + delete: + deprecated: true + responses: + '204': + description: '' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * *JOB_PROPERTY_NOT_FOUND* when job property does not exist + + * *JOB_PROPERTY_VALUE_NOT_FOUND* when job property value does not + exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Archive a job property value. Please use `PUT + /configuration/job-properties/{id}/archive-values/{valueId}` instead. + tags: + - configuration + summary: Archive a job property value + operationId: configuration.job-properties.values.deprecatedArchive + security: + - key: [] + - oauth: + - configuration_manage + put: + deprecated: true + responses: + '204': + description: '' + '404': + description: > + with codes: + + * *JOB_PROPERTY_NOT_FOUND* when job property does not exist + + * *JOB_PROPERTY_VALUE_NOT_FOUND* when job property value does not + exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + with codes: + + * *VALUE_LABEL_IS_INVALID* when value label contains invalid + characters. In order to unarchive the value, first update the label + with only valid characters. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Unarchive a job property value. `DELETE + /configuration/job-properties/{id}/archive-values/{valueId}` instead. + tags: + - configuration + summary: Unarchive a job property value + operationId: configuration.job-properties.values.deprecatedUnarchive + security: + - key: [] + - oauth: + - configuration_manage + patch: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JobPropertyValueDefinition' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * *JOB_PROPERTY_NOT_FOUND* when job property does not exist + + * *JOB_PROPERTY_VALUE_NOT_FOUND* when job property value does not + exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: When label being updated conflicts with already existing one. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + with input validation fails or with codes: + + * *ACTIVE_VALUES_LIMIT_REACHED* when limit of active job property + values is reached. + + * *JSON_PATCH_INVALID* when patch json is invalid. + + * *VALUE_LABEL_IS_BLANK* when provided label is blank + + * *VALUE_LABEL_IS_INVALID* when provided label is not valid, e.g. + contains leading/trailing whitespaces + description: >- + Update a job property value. Returns an updated job property value + object. + tags: + - configuration + summary: Update a job property value + operationId: configuration.job-properties.values.update + security: + - key: [] + - oauth: + - configuration_manage + requestBody: + $ref: '#/components/requestBodies/JSONPatch' + /configuration/job-properties/{id}/values/{valueId}/translations: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + - $ref: '#/components/parameters/jobPropertyValueId' + patch: + security: + - key: [] + - oauth: + - configuration_manage + responses: + '204': + description: Translations accepted + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes + * *JOB_PROPERTY_NOT_FOUND* - when job property not found + * *JOB_PROPERTY_VALUE_NOT_FOUND* when job property's value with given id does not exist. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: >- + There is more than one translation with the same language in the + input + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: 'Invalid input: missing required data, invalid format' + description: Submit a job property value's translations to different languages + tags: + - configuration + summary: Add a job property value's translations + operationId: configuration.job-properties.values.translations.patch + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/LabelTranslations' + required: true + /configuration/job-properties/{id}/archive-values/{valueId}: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + - $ref: '#/components/parameters/jobPropertyValueId' + put: + responses: + '204': + description: '' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * *JOB_PROPERTY_NOT_FOUND* when job property does not exist + + * *JOB_PROPERTY_VALUE_NOT_FOUND* when job property value does not + exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Archive a job property value + tags: + - configuration + summary: Archive a job property value + operationId: configuration.job-properties.values.archive + security: + - key: [] + - oauth: + - configuration_manage + delete: + responses: + '204': + description: '' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * *JOB_PROPERTY_NOT_FOUND* when job property does not exist + + * *JOB_PROPERTY_VALUE_NOT_FOUND* when job property value does not + exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + with codes: + + * *VALUE_LABEL_IS_INVALID* when value label contains invalid + characters. In order to unarchive the value, first update the label + with only valid characters. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unarchive a job property value + tags: + - configuration + summary: Unarchive a job property value + operationId: configuration.job-properties.values.unarchive + security: + - key: [] + - oauth: + - configuration_manage + /configuration/job-properties/{id}/activation: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + put: + responses: + '204': + description: '' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Job property not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: When trying to activate job property that has no active values + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Activates a job property with given id. + tags: + - configuration + summary: Activate a job property + operationId: configuration.job-properties.activate + security: + - key: [] + - oauth: + - configuration_manage + delete: + responses: + '204': + description: '' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Job property not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Deactivates a job property. + tags: + - configuration + summary: Deactivate a job property + operationId: configuration.job-properties.deactivate + security: + - key: [] + - oauth: + - configuration_manage + /configuration/job-properties/{id}/dependents: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + get: + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DependentJobProperties' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + * **JOB_PROPERTY_NOT_FOUND** when job property not found, + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get list of job property's dependents + tags: + - configuration + summary: Get job property's dependents + operationId: configuration.job-properties.dependents.all + security: + - key: [] + - oauth: + - configuration_read + post: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DependentJobProperties' + '400': + description: > + with codes + + * **JOB_PROPERTIES_CIRCULAR_DEPENDENCY** for job properties circular + dependency + + * **JOB_PROPERTY_ALREADY_DEPENDENT** when job property is already + other job property's dependent + + * **DEPENDENT_JOB_PROPERTY_NOT_FOUND** when dependent job property + not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + * **JOB_PROPERTY_NOT_FOUND** when job property not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: when input validation fails + description: Create dependencies between job properties + tags: + - configuration + summary: Create job property dependents + operationId: configuration.job-properties.dependents.create + security: + - key: [] + - oauth: + - configuration_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DependentJobPropertiesIds' + description: Job properties' id + required: true + /configuration/job-properties/{id}/dependents/{dependentId}: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + - $ref: '#/components/parameters/jobPropertyDependentId' + delete: + responses: + '204': + description: '' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with code + + * **JOB_PROPERTY_NOT_FOUND** when job property not found + + * **JOB_PROPERTY_DEPENDENT_NOT_FOUND** when job property dependent + not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Remove dependency between job properties + tags: + - configuration + summary: Remove job property's dependent + operationId: configuration.job-properties.dependents.remove + security: + - key: [] + - oauth: + - configuration_manage + /configuration/job-properties/{id}/dependents/{dependentId}/values: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + - $ref: '#/components/parameters/jobPropertyDependentId' + get: + deprecated: true + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DependentJobPropertyValuesRelations' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **JOB_PROPERTY_NOT_FOUND** when job property not found, + + * **JOB_PROPERTY_DEPENDENT_NOT_FOUND** when job property dependent + not found + + * **DEPENDENCY_NOT_FOUND** when dependency between properties not + found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Get dependent job property's values with corelation to the parent field. + Please use GET + configuration/job-properties/{id}/values/{valueId}/dependents/{dependentId}/values + (with paging) instead. + tags: + - configuration + summary: Get dependent job property's values + operationId: configuration.job-properties.dependents.values.all + security: + - key: [] + - oauth: + - configuration_read + /configuration/job-properties/{id}/values/{valueId}/dependents/{dependentId}/values: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + - $ref: '#/components/parameters/jobPropertyValueId' + - $ref: '#/components/parameters/jobPropertyDependentId' + get: + parameters: + - $ref: '#/components/parameters/language' + - $ref: '#/components/parameters/pageId' + - $ref: '#/components/parameters/pageSize' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DependentJobPropertyValues' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **JOB_PROPERTY_NOT_FOUND** when job property not found, + + * **JOB_PROPERTY_VALUE_NOT_FOUND* when job property value not found + + * **JOB_PROPERTY_DEPENDENT_NOT_FOUND** when job property dependent + not found + + * **DEPENDENCY_NOT_FOUND** when dependency between properties not + found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Get list of job property's dependent values for specific job property's + value + tags: + - configuration + summary: Get job property's dependent values + operationId: configuration.job-properties.dependents.values.get + security: + - key: [] + - oauth: + - configuration_read + post: + responses: + '204': + description: '' + '400': + description: > + with code: + + * **JOB_PROPERTY_DEPENDENT_VALUE_NOT_FOUND** when job property + dependent value id not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **JOB_PROPERTY_NOT_FOUND** when job property not found, + + * **JOB_PROPERTY_VALUE_NOT_FOUND* when job property value not found + + * **JOB_PROPERTY_DEPENDENT_NOT_FOUND** when job property dependent + not found + + * **DEPENDENCY_NOT_FOUND** when dependency between properties not + found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: > + with code: + + * **JOB_PROPERTY_DEPENDENT_VALUE_EXISTS** when job property's + dependent value exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: when input validation fails + description: Add job property's dependent value for specific job property's value + tags: + - configuration + summary: Add job property's dependent value + operationId: configuration.job-properties.dependents.values.add + security: + - key: [] + - oauth: + - configuration_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Identifiable' + description: Identifier of job property's dependent value + required: true + /configuration/job-properties/{id}/values/{valueId}/dependents/{dependentId}/values/{dependentValueId}: + parameters: + - $ref: '#/components/parameters/jobPropertyId' + - $ref: '#/components/parameters/jobPropertyValueId' + - $ref: '#/components/parameters/jobPropertyDependentId' + - $ref: '#/components/parameters/jobPropertyDependentValueId' + delete: + responses: + '204': + description: '' + '403': + description: >- + Forbidden to access the resource, check your authorisation and + rights. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **JOB_PROPERTY_NOT_FOUND** when job property not found, + + * **JOB_PROPERTY_VALUE_NOT_FOUND* when job property value not found + + * **JOB_PROPERTY_DEPENDENT_NOT_FOUND** when job property's dependent + not found + + * **JOB_PROPERTY_DEPENDENT_VALUE_NOT_FOUND** when job property's + dependent value not found + + * **DEPENDENCY_NOT_FOUND** when dependency between properties not + found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Remove relationship between dependent job properties values + tags: + - configuration + summary: Remove job property's dependent values relationship + operationId: configuration.job-properties.dependents.values.remove + security: + - key: [] + - oauth: + - configuration_manage + /configuration/departments: + post: + responses: + '201': + description: Created department + content: + application/json: + schema: + $ref: '#/components/schemas/Department' + '400': + description: >- + With code **DEPARTMENT_LABEL_NOT_UNIQUE** when department with given + label already exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - configuration + summary: Creates department + operationId: configuration.department.create + security: + - key: [] + - oauth: + - configuration_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Department' + description: department to be created + required: true + get: + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: Department list + content: + application/json: + schema: + $ref: '#/components/schemas/Departments' + tags: + - configuration + summary: Get departments + operationId: configuration.department.all + security: + - key: [] + - oauth: + - configuration_read + /configuration/departments/{id}: + get: + responses: + '200': + description: Department + content: + application/json: + schema: + $ref: '#/components/schemas/Department' + '404': + description: Department not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - configuration + summary: Get department + operationId: configuration.department.get + security: + - key: [] + - oauth: + - configuration_read + parameters: + - in: path + description: Identifier of a department + name: id + required: true + schema: + type: string + /configuration/hiring-processes: + get: + responses: + '200': + description: Hiring processes list + content: + application/json: + schema: + $ref: '#/components/schemas/HiringProcesses' + tags: + - configuration + summary: Get list of hiring process + operationId: configuration.hiring-process.all + security: + - key: [] + - oauth: + - configuration_read + /configuration/hiring-processes/{id}: + get: + responses: + '200': + description: Hiring process + content: + application/json: + schema: + $ref: '#/components/schemas/HiringProcess' + '404': + description: Hiring process not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - configuration + summary: Get hiring process + operationId: configuration.hiring-process.get + security: + - key: [] + - oauth: + - configuration_read + parameters: + - in: path + description: Identifier of a hiring process + name: id + required: true + schema: + type: string + /configuration/offer-properties: + get: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/OfferPropertiesDefinition' + '403': + description: | + with code **NO_ACCESS_TO_OFFERS** when not permitted to see offers + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get a list of available offer properties. + tags: + - configuration + summary: Get a list of available offer properties + operationId: configuration.offer-properties.all + security: + - key: [] + - oauth: + - configuration_read + /configuration/candidate-properties: + get: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CandidatePropertyDefinitionList' + '403': + description: Permission denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get all candidate properties and their configuration for a company + tags: + - configuration + summary: Get a list of available candidate properties + operationId: configuration.candidate-properties.all + security: + - key: [] + - oauth: + - configuration_read + /configuration/candidate-properties/{id}: + parameters: + - $ref: '#/components/parameters/candidatePropertyId' + get: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CandidatePropertyDefinition' + '404': + description: Candidate property not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get candidate property details and its configuration by id. + tags: + - configuration + summary: Get candidate property by id + operationId: configuration.candidate-properties.get + security: + - key: [] + - oauth: + - configuration_read + /configuration/candidate-properties/{id}/values: + parameters: + - $ref: '#/components/parameters/candidatePropertyId' + get: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CandidatePropertyValueList' + '400': + description: >- + With code **CANDIDATE_PROPERTY_NOT_SINGLE_SELECT** when candidate + property type is not SINGLE_SELECT + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Candidate property not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Lists all available values for given candidate property id. This + endpoint is available only for SINGLE_SELECT candidate property type. + tags: + - configuration + summary: Get Candidate Property values + operationId: configuration.candidate-properties.values.all + security: + - key: [] + - oauth: + - configuration_read + post: + responses: + '201': + description: Created candidate property value + content: + application/json: + schema: + $ref: '#/components/schemas/CandidatePropertyValue' + '400': + description: > + With codes + + * **CANDIDATE_PROPERTY_NOT_SINGLE_SELECT** when candidate property + type is not SINGLE_SELECT + + * **CANDIDATE_PROPERTY_VALUES_LIMIT_EXCEEDED** when SINGLE_SELECT + candidate property values limit is exceeded + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Candidate property not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: > + with codes + + * **CANDIDATE_PROPERTY_VALUE_ID_ALREADY_EXISTS** when candidate + property with given id already exists, + + * **CANDIDATE_PROPERTY_VALUE_LABEL_ALREADY_EXISTS** when candidate + property with given label already exists. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Create SINGLE_SELECT candidate property value + tags: + - configuration + summary: Create candidate property value + operationId: configuration.candidate-properties.values.create + security: + - key: [] + - oauth: + - configuration_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CandidatePropertyValue' + description: Candidate property value. + required: true + /configuration/candidate-properties/{id}/values/{valueId}: + parameters: + - $ref: '#/components/parameters/candidatePropertyId' + - $ref: '#/components/parameters/candidatePropertyValueId' + get: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CandidatePropertyValue' + '400': + description: >- + With code **CANDIDATE_PROPERTY_NOT_SINGLE_SELECT** when candidate + property type is not SINGLE_SELECT + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **CANDIDATE_PROPERTY_NOT_FOUND** when candidate property with + given id does not exist, + + * **CANDIDATE_PROPERTY_VALUE_NOT_FOUND** when candidate property + value with given id does not exist. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get Candidate Property value by its id. + tags: + - configuration + summary: Get Candidate Property value by id + operationId: configuration.candidate-properties.values.get + security: + - key: [] + - oauth: + - configuration_read + put: + responses: + '201': + description: Updated candidate property value + content: + application/json: + schema: + $ref: '#/components/schemas/CandidatePropertyValue' + '400': + description: >- + With codes + + * **CANDIDATE_PROPERTY_NOT_SINGLE_SELECT** when candidate property + type is not SINGLE_SELECT + + * **CANDIDATE_PROPERTY_LIBRARY_READONLY_RESTRICTION** when modifying + read-only value options + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **CANDIDATE_PROPERTY_NOT_FOUND** when candidate property with + given id does not exist, + + * **CANDIDATE_PROPERTY_VALUE_NOT_FOUND** when candidate property + value with given id does not exist. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: > + with code **CANDIDATE_PROPERTY_VALUE_LABEL_ALREADY_EXISTS** when + candidate property with given label already exists. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Update candidate property value label + tags: + - configuration + summary: Update candidate property value label + operationId: configuration.candidate-properties.values.update + security: + - key: [] + - oauth: + - configuration_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CandidatePropertyValueLabel' + description: Candidate property value label. + required: true + delete: + responses: + '204': + description: '' + '400': + description: > + with codes: + + * **CANDIDATE_PROPERTY_NOT_SINGLE_SELECT** when candidate property + type is not SINGLE_SELECT, + + * **CANDIDATE_PROPERTY_LAST_VALUE** when attempting to remove the + last candidate property value + + * **CANDIDATE_PROPERTY_LIBRARY_READONLY_RESTRICTION** when + attempting to remove library property value + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **CANDIDATE_PROPERTY_NOT_FOUND** when candidate property with + given id does not exist, + + * **CANDIDATE_PROPERTY_VALUE_NOT_FOUND** when candidate property + value with given id does not exist. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Remove candidate property value label + tags: + - configuration + summary: Remove candidate property value + operationId: configuration.candidate-properties.values.delete + security: + - key: [] + - oauth: + - configuration_manage + /configuration/sources: + get: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/SourceTypes' + description: Get a list of all available candidate source type with subtypes + tags: + - configuration + summary: List candidate source types with subtypes + operationId: configuration.source.types + security: + - key: [] + - oauth: + - configuration_read + /configuration/sources/{sourceType}/values: + parameters: + - $ref: '#/components/parameters/sourceType' + get: + responses: + '200': + description: List of candidate sources + content: + application/json: + schema: + $ref: '#/components/schemas/Sources' + '400': + description: > + with codes + + * **SOURCE_TYPE_AND_SUBTYPE_INVALID** when provided pair (type, + subtype) is invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Source not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get a list of all available candidate sources by type. + tags: + - configuration + summary: List candidate sources + operationId: configuration.source.values.all + security: + - key: [] + - oauth: + - configuration_read + parameters: + - $ref: '#/components/parameters/sourceSubType' + - in: query + description: number of elements to return. max value is 100 + name: limit + required: false + schema: + type: integer + minimum: 1 + maximum: 100 + default: 100 + - in: query + description: number of elements to skip while processing result + name: offset + required: false + schema: + type: integer + minimum: 0 + default: 0 + /configuration/sources/{sourceType}/values/{sourceValueId}: + parameters: + - $ref: '#/components/parameters/sourceType' + - $ref: '#/components/parameters/sourceValueId' + get: + responses: + '200': + description: Source + content: + application/json: + schema: + $ref: '#/components/schemas/Source' + '400': + description: > + with codes: + + * **SOURCE_TYPE_INVALID** when provided type does not exist, + + * **SUBTYPE_REQUIRED** when there are more sources and subtype + parameter is required, + + * **SOURCE_TYPE_AND_SUBTYPE_INVALID** when provided pair (type, + subtype) is invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Source with given source value id not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get a single candidate sources for a given type. + tags: + - configuration + summary: Get a candidate source + operationId: configuration.source.values.single + security: + - key: [] + - oauth: + - configuration_read + parameters: + - $ref: '#/components/parameters/sourceSubType' + /configuration/sources/{sourceIdentifier}: + parameters: + - $ref: '#/components/parameters/sourceIdentifier' + get: + responses: + '200': + description: Source + content: + application/json: + schema: + $ref: '#/components/schemas/SourceDefinition' + '400': + description: |- + Invalid source identifier. With codes + * *INVALID_IDENTIFIER* - when identifier has invalid format. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: |- + Source with given identifier not found. With codes + * *SOURCE_NOT_FOUND* - when source is not found. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Get a single candidate source for a given identifier (included deleted + source). + tags: + - configuration + summary: Get a candidate source by identifier. + operationId: configuration.source.values.singleByIdentifier + security: + - key: [] + - oauth: + - configuration_read + /configuration/rejection-reasons: + get: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Properties' + description: Get rejection reasons + tags: + - configuration + summary: Get rejection reasons + operationId: configuration.reasons.rejection.all + security: + - key: [] + - oauth: + - configuration_read + /configuration/withdrawal-reasons: + get: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Properties' + '403': + description: Permission denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get withdrawal reasons + tags: + - configuration + summary: Get withdrawal reasons + operationId: configuration.reasons.withdrawal.all + security: + - key: [] + - oauth: + - configuration_read + /publications/{postingId}: + get: + tags: + - feed + summary: Get posting by id + description: >- + This endpoint allows getting a single job posting information.
You + must pass authentication token through X-SmartToken HTTP header. + operationId: findPostingUsingJson + parameters: + - name: postingId + in: path + description: Posting id to find + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: Posting successfully returned + content: + application/json: + schema: + $ref: '#/components/schemas/FeedJobAd' + '401': + description: Unauthorized + '404': + description: Not found + security: + - key: [] + put: + tags: + - feed + summary: Update posting information + description: >- +

This endpoint allows updating a single job posting status and + URL during a job posting lifecycle.
You must pass + authentication token through X-SmartToken HTTP + header.

Complete list of body parameters below:

Status - + This is the posting status on your job board. It should be updated with + one of the following values:
  • Active - set this status just + after you successfully publish a job to your job board; please provide a + direct URL to the published job in your job board using LiveUrl + so that we can surface it to SmartRecruiters + users
  • UnderPosting - set this status once you begin the + process of posting a job in your job board if your board does not + support immediate posting. When posting is complete, update the status + to Active
  • Inactive - set this status once the job + is no longer published to your job board
  • Error - set this + status when an error prevents the job from being published to your job + board; please provide error details using the Comment + field
LiveUrl - This is direct URL to the job you have + published in your job board; will be surfaced to SmartRecruiters + users
Comment - This is field in which you pass error details + when one occurs while publishing a job; error details will be available + to our Support Team

+ operationId: updatePostingUsingJson + parameters: + - name: postingId + in: path + description: >- + A single posting id. Allows updating information only for the + defined postings. + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/PostingUpdateRequest' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/PostingUpdateRequest' + required: true + responses: + '204': + description: Posting successfully updated + '400': + description: Payload not valid + '401': + description: Wrong token + '404': + description: PostingId not found + security: + - key: [] + /publications: + get: + tags: + - feed + summary: Get a list of postings + description: >- +

Get job postings published to your job board.
You must pass + authentication token through X-SmartToken HTTP header.

By + default, this endpoint will return only postings created in the last 30 + days with the status Pending. Use additional parameters to + control which postings are returned.

+ operationId: postingsJSONStream + parameters: + - name: updatedAfter + in: query + description: >- + List postings created after the specified date.

Date + should be in ISO 8601 format: (e.g.: + '2015-07-27T08:43:33.000Z').

If no value is provided, only + postings created in the last 30 days will be returned. + schema: + type: string + - name: status + in: query + description: >- + List of posting statuses separated by comma.

Status + definition:
  • Pending - this is a new posting that + is pending publication on your job board. You should always retrieve + these postings, publish them, and then update the status via the + PUT method.
  • UnderPosting - this is a status + that is only set by you. It indicates that a posting is currently + being published but is not yet available on the job board. + SmartRecruiters will never set this status + ourselves.
  • Active - this is a status that is only set + by you. It indicates that the posting has been successfully + published and is available on the job board. SmartRecruiters will + never set this status ourselves.
  • toUnpost - this + posting has either expired or has manually been requested for + removal by the client. As a job board, you should unpost these + postings immediately, and then update the status to Inactive + via the PUT method.
  • Inactive - this is a + status that is only set by you. It indicates that the posting has + been successfully unpublished and is no longer available on the job + board. SmartRecruiters will never set this status + ourselves.
  • Error - this is a status only set by you. + It indicates that the posting could not be published. + SmartRecruiters will never set this status + ourselves.

Example: status=Active,Error + schema: + type: array + items: + type: string + enum: + - Pending + - UnderPosting + - Active + - toUnpost + - Inactive + - Error + default: Pending + - name: offset + in: query + description: >- + Number of elements to skip while processing result.
Allowed + range: [0, 2^31-1]. + schema: + minimum: 0 + type: string + default: '0' + - name: limit + in: query + description: 'Maximum number of postings returned.
Allowed range: [0, 100].' + schema: + maximum: 100 + minimum: 0 + type: string + default: '100' + responses: + '200': + description: Postings successfully returned + content: + application/json: + schema: + $ref: '#/components/schemas/FeedPublication' + '401': + description: Unauthorized + '404': + description: Not found + security: + - key: [] + /interview-types: + get: + responses: + '200': + description: Retrieves interview types + content: + application/json: + schema: + $ref: '#/components/schemas/InterviewTypes' + '500': + $ref: '#/components/responses/ServerError' + tags: + - interview types + summary: Retrieves interview types + operationId: types.get + security: + - key: [] + - oauth: + - interview_types_read + patch: + responses: + '204': + description: Interview types updated + '403': + description: Forbidden to create an interview type + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: > + with codes: + + * **INTERVIEW_TYPES_SIZE_EXCEEDED** when maximum size of 2000 + interview types exceeded + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: When input validation fails + '500': + $ref: '#/components/responses/ServerError' + tags: + - interview types + summary: Adds interview types to already existing ones + operationId: types.update + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/InterviewTypes' + description: Interview types to be added + required: true + security: + - key: [] + - oauth: + - interview_types_write + /interview-types/{interviewType}: + parameters: + - $ref: '#/components/parameters/InterviewType' + delete: + responses: + '204': + description: Interview type deleted + '403': + description: Forbidden to delete an interview type + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **INTERVIEW_TYPE_NOT_FOUND** When no interview type with given + name + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - interview types + summary: Removes interview type with given name + operationId: types.delete + security: + - key: [] + - oauth: + - interview_types_write + /interviews: + get: + parameters: + - $ref: '#/components/parameters/ApplicationId' + responses: + '200': + description: List of interviews + content: + application/json: + schema: + $ref: '#/components/schemas/InterviewsList' + '403': + description: Forbidden to access interviews list + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **APPLICATION_NOT_FOUND** when no application found with given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - interviews + summary: Retrieves a list of interviews + description: List of interviews + operationId: interviews.get-list + security: + - key: [] + - oauth: + - interviews_read + post: + responses: + '201': + description: Created interview + content: + application/json: + schema: + $ref: '#/components/schemas/Interview' + '400': + description: | + with codes: + * **INVALID_TIMEZONE** when invalid timezone + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden to create an interview + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + When input validation fails or with codes: + + * **INACTIVE_OR_DELETED_ORGANIZER** when inactive or deleted + organizer + + * **INACTIVE_OR_DELETED_INTERVIEWERS** when at least one of the + interviewers is inactive or deleted + + * **END_DATE_BEFORE_START_DATE** when end date of the timeslot is + before start date + + * **NON_EXISTING_ORGANIZER** when organizer does not exist + + * **NON_EXISTING_INTERVIEWERS** when at least one of the + interviewers does not exist + + * **CANDIDATE_NOT_FOUND** when candidate with given id not found + + * **JOB_NOT_FOUND** when job with given id not found + + * **APPLICATION_NOT_FOUND** when application for given candidate id + and job id not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - interviews + summary: Creates an interview + operationId: interviews.create + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Interview' + description: Interview to be added + required: true + security: + - key: [] + - oauth: + - interviews_write + /interviews/{interviewId}: + parameters: + - $ref: '#/components/parameters/InterviewId' + get: + responses: + '200': + description: Interview + content: + application/json: + schema: + $ref: '#/components/schemas/Interview' + '403': + description: Forbidden to access an interview + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **INTERVIEW_NOT_FOUND** when no interview with given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - interviews + summary: Retrieves an interview + description: Interview details + operationId: interviews.get + security: + - key: [] + - oauth: + - interviews_read + patch: + responses: + '204': + description: Interview updated + '400': + description: | + with codes: + * **INVALID_TIMEZONE** when invalid timezone + '403': + description: Forbidden to update an interview + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **INTERVIEW_NOT_FOUND** when no interview with given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: When input validation fails + '500': + $ref: '#/components/responses/ServerError' + tags: + - interviews + summary: Modifies an interview + operationId: interviews.update + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/InterviewToUpdateInput' + description: Interview to be updated + required: true + security: + - key: [] + - oauth: + - interviews_write + delete: + responses: + '204': + description: Interview was deleted + '403': + description: Forbidden to delete an interview + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **INTERVIEW_NOT_FOUND** when no interview with given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - interviews + summary: Deletes an interview + operationId: interviews.delete + security: + - key: [] + - oauth: + - interviews_write + /interviews/{interviewId}/timeslots: + post: + responses: + '201': + description: Created timeslot with id + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/Timeslot' + '403': + description: Forbidden to create a timeslot + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **INTERVIEW_NOT_FOUND** when no interview with given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: > + with codes: + + * **CANNOT_ADD_MORE_TIMESLOTS** when interview already contains + maximum number of timeslots + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + When input validation fails or with codes: + + * **INACTIVE_OR_DELETED_INTERVIEWERS** when at least one of the + interviewers is inactive or deleted + + * **END_DATE_BEFORE_START_DATE** when end date of the timeslot is + before start date + + * **NON_EXISTING_INTERVIEWERS** when at least one of the + interviewers does not exist + '500': + $ref: '#/components/responses/ServerError' + tags: + - timeslots + summary: Creates a timeslot + operationId: timeslots.create + parameters: + - $ref: '#/components/parameters/InterviewId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Timeslot' + description: Timeslot to be added + required: true + security: + - key: [] + - oauth: + - interviews_write + /interviews/{interviewId}/timeslots/{timeslotId}: + parameters: + - $ref: '#/components/parameters/InterviewId' + - $ref: '#/components/parameters/TimeslotId' + get: + responses: + '200': + description: Timeslot + content: + application/json: + schema: + $ref: '#/components/schemas/Timeslot' + '403': + description: Forbidden to access a timeslot + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **INTERVIEW_NOT_FOUND** when no interview with given id + * **TIMESLOT_NOT_FOUND** when no timeslot with given id + '500': + $ref: '#/components/responses/ServerError' + tags: + - timeslots + summary: Retrieves a timeslot + operationId: timeslots.get + security: + - key: [] + - oauth: + - interviews_read + patch: + responses: + '204': + description: Timeslot updated + '400': + description: Missing data in timeslot object + '403': + description: Forbidden to update a timeslot + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **INTERVIEW_NOT_FOUND** when no interview with given id + * **TIMESLOT_NOT_FOUND** when no timeslot with given id + '422': + description: > + When input validation fails or with codes: + + * **INACTIVE_OR_DELETED_INTERVIEWERS** when at least one of the + interviewers is inactive or deleted + + * **END_DATE_BEFORE_START_DATE** when end date of the timeslot is + before start date + + * **NON_EXISTING_INTERVIEWERS** when at least one of the + interviewers does not exist + '500': + $ref: '#/components/responses/ServerError' + tags: + - timeslots + summary: Modifies a timeslot + operationId: timeslots.update + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Timeslot' + description: Timeslot to be updated + required: true + security: + - key: [] + - oauth: + - interviews_write + delete: + responses: + '204': + description: Timeslot deleted + '403': + description: Forbidden to delete a timeslot + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **INTERVIEW_NOT_FOUND** when no interview with given id + * **TIMESLOT_NOT_FOUND** when no timeslot with given id + '409': + description: | + with codes: + * **CANNOT_DELETE_LAST_TIMESLOT** when cannot delete last timeslot + '500': + $ref: '#/components/responses/ServerError' + tags: + - timeslots + summary: Deletes a timeslot + operationId: timeslots.delete + security: + - key: [] + - oauth: + - interviews_write + /interviews/{interviewId}/candidate/status: + parameters: + - $ref: '#/components/parameters/InterviewId' + put: + responses: + '204': + description: Status successfully changed + '403': + description: Forbidden to change candidate's status + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **INTERVIEW_NOT_FOUND** when no interview with given id + '422': + description: When input validation fails + '500': + $ref: '#/components/responses/ServerError' + tags: + - statuses + summary: Changes a candidate's status. + operationId: statuses.candidate.put + deprecated: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AttendeeStatus' + description: New candidate's status + required: true + security: + - key: [] + - oauth: + - interviews_write + /interviews/{interviewId}/timeslots/{timeslotId}/interviewers/{userId}/status: + parameters: + - $ref: '#/components/parameters/InterviewId' + - $ref: '#/components/parameters/TimeslotId' + - $ref: '#/components/parameters/UserId' + put: + responses: + '204': + description: Status successfully changed + '403': + description: Forbidden to change interviewer's status + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **INTERVIEW_NOT_FOUND** when no interview with given id * + **TIMESLOT_NOT_FOUND** when no timeslot with given id * + **NON_EXISTING_INTERVIEWERS** when no interviewer with given id + exists in timeslot + '422': + description: When input validation fails + '500': + $ref: '#/components/responses/ServerError' + tags: + - statuses + summary: Changes a interviewer's status in given timeslot + operationId: statuses.interviewer.put + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AttendeeStatus' + description: New interviewer's status + required: true + security: + - key: [] + - oauth: + - interviews_write + /interviews/{interviewId}/timeslots/{timeslotId}/candidateStatus: + parameters: + - $ref: '#/components/parameters/InterviewId' + - $ref: '#/components/parameters/TimeslotId' + put: + summary: Changes a candidate's status in given timeslot + operationId: statuses.timeslot-candidate.put + tags: + - statuses + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AttendeeStatus' + description: New candidate's status + required: true + responses: + '204': + description: Candidate status in a timeslot is successfully changed + '403': + description: Forbidden to change candidates's status in a timeslot + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes: + + * **INTERVIEW_NOT_FOUND** when no interview with given id * + **TIMESLOT_NOT_FOUND** when no timeslot with given id + '422': + description: When input validation fails + '500': + $ref: '#/components/responses/ServerError' + security: + - key: [] + - oauth: + - interviews_write + /jobs/{jobId}/positions: + parameters: + - $ref: '#/components/parameters/jobId' + get: + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: Job's positions + content: + application/json: + schema: + $ref: '#/components/schemas/JobPositions' + '403': + description: Job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - jobs + summary: Positions for a job + operationId: jobs.positions.all + security: + - key: [] + - oauth: + - jobs_read + post: + responses: + '201': + description: Created position + content: + application/json: + schema: + $ref: '#/components/schemas/JobPosition' + '403': + description: | + with codes + * **APPROVAL_PROCESS_ENABLED** when approval process is enabled + * **PERMISSION_DENIED** when job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - jobs + summary: Create a new position for a job + operationId: jobs.positions.create + security: + - key: [] + - oauth: + - jobs_manage + requestBody: + $ref: '#/components/requestBodies/JobPositionInput' + /jobs/{jobId}/positions/{positionId}: + parameters: + - $ref: '#/components/parameters/jobId' + - $ref: '#/components/parameters/positionId' + get: + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: Found position + content: + application/json: + schema: + $ref: '#/components/schemas/JobPosition' + '403': + description: Job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Position not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - jobs + summary: Get a single position + operationId: jobs.positions.get + security: + - key: [] + - oauth: + - jobs_read + put: + responses: + '201': + description: Updated position + content: + application/json: + schema: + $ref: '#/components/schemas/JobPosition' + '403': + description: | + with codes + * **APPROVAL_PROCESS_ENABLED** when approval process is enabled + * **PERMISSION_DENIED** when job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Position not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - jobs + summary: Update position + operationId: jobs.positions.update + security: + - key: [] + - oauth: + - jobs_manage + requestBody: + $ref: '#/components/requestBodies/JobPositionInput' + delete: + responses: + '204': + description: Position successfully removed + '400': + description: >- + with code **POSITION_ASSIGNED** when position has candidate already + assigned and cannot be removed + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: | + with codes + * **APPROVAL_PROCESS_ENABLED** when approval process is enabled + * **PERMISSION_DENIED** when job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Position not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - jobs + summary: Delete position + operationId: jobs.positions.remove + security: + - key: [] + - oauth: + - jobs_manage + /jobs/{jobId}/jobads: + parameters: + - $ref: '#/components/parameters/jobId' + get: + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: Job's job ads + content: + application/json: + schema: + $ref: '#/components/schemas/JobAds' + '404': + description: Job not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - jobs + summary: Find and list job ads for a given job + operationId: jobs.jobads.all + security: + - key: [] + - oauth: + - jobs_read + post: + responses: + '200': + description: Created job ad. + content: + application/json: + schema: + $ref: '#/components/schemas/JobAdItem' + '400': + description: > + with codes + + * **JOB_AD_LIMIT_REACHED** when job add limit (100 per job) is + reached + + * **PROPERTY_INVALID** when one of job ad attribute contains invalid + characters + '404': + description: Job not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - jobs + summary: Create a new job ad + operationId: jobs.jobads.create + security: + - key: [] + - oauth: + - jobs_manage + requestBody: + $ref: '#/components/requestBodies/JobAdContent' + /jobs/{jobId}/jobads/{jobAdId}: + parameters: + - $ref: '#/components/parameters/jobId' + - $ref: '#/components/parameters/jobAdId' + get: + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: Job ad + content: + application/json: + schema: + $ref: '#/components/schemas/JobAdItem' + '404': + description: Job or job ad not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - jobs + summary: Get a job ad + operationId: jobs.jobads.get + security: + - key: [] + - oauth: + - jobs_read + put: + responses: + '200': + description: Updated job ad + content: + application/json: + schema: + $ref: '#/components/schemas/JobAdItem' + '400': + description: > + with code + + * **PROPERTY_INVALID** when one of job ad attribute contains invalid + characters + '404': + description: Job or job ad not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Enables you to update an existing job ad. + + NOTE: In order for a job ad changes to be reflected on internal sources + (Career Sites, Job Widgets etc.) and Job Aggregators, you need to + Publish the job ad after making an update. + tags: + - jobs + summary: Update a job ad + operationId: jobs.jobads.update + security: + - key: [] + - oauth: + - jobs_manage + requestBody: + $ref: '#/components/requestBodies/JobAdContent' + /jobs/{jobId}/jobads/{jobAdId}/postings: + parameters: + - $ref: '#/components/parameters/jobId' + - $ref: '#/components/parameters/jobAdId' + post: + responses: + '202': + description: Posting scheduled + content: + application/json: + schema: + $ref: '#/components/schemas/JobAdPublicationScheduled' + '400': + description: > + with code + + * **PUBLISHED_JOB_AD_LIMIT_REACHED** when company's limit for + published job ads has been reached + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: | + with code + * **ACCESS_FORBIDDEN** when user is not authorize to publish a job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with code + + * **JOB_NOT_POSTED** when default job ad for the job has not been + published + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + * **JOBAD_NOT_FOUND** when job ad has not been found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Publishes a job ad to internal sources (Career Pages, Job Widget, + Facebook App, WordPress Plugin, Posting API) and optionally to all free + job aggregators. + + + By default it's set to publish to job aggregators + + + It reflects a Publish action available in the SmartRecruiters UI. + + + Note: Internal sources depend on a company's payment plan. + tags: + - jobs + summary: Publishes a job ad + operationId: jobs.jobads.postings.create + security: + - key: [] + - oauth: + - jobs_manage + requestBody: + $ref: '#/components/requestBodies/Publication' + get: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/PublicationList' + '403': + description: > + with code + + * **ACCESS_FORBIDDEN** when user is not authorized to access job ad + postings + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + * **JOBAD_NOT_FOUND** when job ad has not been found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: List publications for a job ad + tags: + - jobs + summary: List publications for a job ad + operationId: jobs.jobads.postings.all + security: + - key: [] + - oauth: + - jobs_read + parameters: + - $ref: '#/components/parameters/language' + - in: query + description: >- + publication status filter; when omitted, defaults to 'true' (only + active publications are returned); 'false' returns active and + inactive publications + name: activeOnly + required: false + schema: + type: boolean + default: true + delete: + responses: + '202': + description: Unpost scheduled + content: + application/json: + schema: + $ref: '#/components/schemas/JobAdUnpublishScheduled' + '401': + description: > + with code + + * **ACCESS_FORBIDDEN** when user is not authorized to unpublish job + ad + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + * **JOBAD_NOT_FOUND** when job ad has not been found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Unpublishes a job ad from all sources. + + + **Unpublishing a default job ad will unpublish all other job ads within + that job.** + tags: + - jobs + summary: Unpublish a job ad + operationId: jobs.jobads.postings.unpublish + security: + - key: [] + - oauth: + - jobs_manage + /jobs/{jobId}/publication: + parameters: + - $ref: '#/components/parameters/jobId' + post: + responses: + '204': + description: '' + '400': + description: > + with code + + * **PUBLISHED_JOB_AD_LIMIT_REACHED** when company's limit for + published job ads has been reached + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: > + with code + + * **UNAUTHORIZED_TO_ACCESS_JOB** - when user is not authorized to + access the job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with code + + * **NOT_AUTHORIZED_TO_PUBLISH_JOB** - when user is not authorized to + publish the job or approval process for the job is required + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Publishes default job ad to internal sources and to free job + aggregators. + + + It reflects a Publish action available in the SmartRecruiters UI. + + + Note: + Internal sources: Career Pages, Job Widget, Facebook App, WordPress Plugin, Posting API depend on a company's payment plan. + tags: + - jobs + summary: Publishes a default job ad + operationId: jobs.publication.create + security: + - key: [] + - oauth: + - jobs_publications_manage + requestBody: + $ref: '#/components/requestBodies/Publication' + delete: + responses: + '204': + description: '' + '401': + description: > + with code + + * **UNAUTHORIZED_TO_ACCESS_JOB** - when user is not authorized to + access the job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Unpublishes a job from all sources + tags: + - jobs + summary: Unpublishes a job from all sources + operationId: jobs.publication.unpublish + security: + - key: [] + - oauth: + - jobs_publications_manage + get: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/PublicationList' + '401': + description: > + with code + + * **UNAUTHORIZED_TO_ACCESS_JOB** - when user is not authorized to + access the job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Find and list publications for a job + tags: + - jobs + summary: Find and list publications for a job + operationId: jobs.publication.all + security: + - key: [] + - oauth: + - jobs_read + parameters: + - $ref: '#/components/parameters/language' + - in: query + description: >- + publication status filter; defaults to 'true' (only active + publications are returned); 'false' returns active and inactive + publications + name: activeOnly + required: false + schema: + type: boolean + default: true + /jobs/{jobId}/hiring-team: + parameters: + - $ref: '#/components/parameters/jobId' + get: + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: Hiring team members + content: + application/json: + schema: + $ref: '#/components/schemas/HiringTeamMembers' + '401': + description: Job access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get hiring team of a job with a given id. + tags: + - jobs + summary: Get hiring team of a job with a given id. + operationId: jobs.hiring-team.get + security: + - key: [] + - oauth: + - jobs_read + post: + responses: + '200': + description: Added hiring team member + content: + application/json: + schema: + $ref: '#/components/schemas/HiringTeamMemberResponse' + '400': + description: | + with code + * **USER_NOT_FOUND** when user with given id does not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Job access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: User is already a member of the hiring team + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Add hiring team member of a job with a given id + tags: + - jobs + summary: Add hiring team member of a job with a given id. + operationId: jobs.hiring-team.add + security: + - key: [] + - oauth: + - jobs_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/HiringTeamMember' + description: HiringTeamMember object + /jobs/{jobId}/hiring-team/{userId}: + parameters: + - $ref: '#/components/parameters/jobId' + - in: path + description: user identifier + name: userId + required: true + schema: + type: string + delete: + responses: + '204': + description: '' + '400': + description: | + with code + * **INVALID_HIRING_TEAM_STATE** when removing the last hiring + team member. Each hiring team should have at least one member. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Job access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: User is not a member of the hiring team + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Removes hiring team member of a job with a given id. + tags: + - jobs + summary: Removes hiring team member of a job with a given id. + operationId: jobs.hiring-team.remove + security: + - key: [] + - oauth: + - jobs_manage + /jobs/{jobId}/note: + parameters: + - $ref: '#/components/parameters/jobId' + get: + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: Job note. + content: + application/json: + schema: + $ref: '#/components/schemas/JobNote' + '401': + description: Job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Job note not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - jobs + summary: Get note of a job. + operationId: jobs.notes.get + security: + - key: [] + - oauth: + - jobs_read + put: + responses: + '200': + description: Updated note. + content: + application/json: + schema: + $ref: '#/components/schemas/JobNote' + '401': + description: Job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Update note of a job. + tags: + - jobs + summary: Update note of a job. + operationId: jobs.notes.update + security: + - key: [] + - oauth: + - jobs_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/JobNote' + required: true + /jobs/{jobId}/headcount: + parameters: + - $ref: '#/components/parameters/jobId' + patch: + description: Update job headcount. + tags: + - jobs + summary: Update job headcount. + operationId: jobs.headcount.update + security: + - key: [] + - oauth: + - jobs_manage + responses: + '202': + description: Accepted headcount update request + content: + application/json: + schema: + $ref: '#/components/schemas/HeadcountUpdateAccepted' + '400': + description: > + with codes + + * **CANNOT_START_APPROVAL_PROCESS** when approval process cannot be + started + + * **INVALID_SALARY_RANGE** when salary range is not valid + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: | + with codes + * **PERMISSION_DENIED** when job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with codes + + * **APPROVAL_PROCESS_NOT_ENABLED** when approval process is not + enabled + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/HeadcountPatchRequest' + required: true + /jobs: + get: + responses: + '200': + description: >- + Jobs matching search criteria. | Note that location returned by this + endpoint will **not** provide latitude and longitude. + content: + application/json: + schema: + $ref: '#/components/schemas/Jobs' + headers: + Link: + schema: + type: string + description: > + Links to related resources, in the format defined by + + [RFC 5988](https://tools.ietf.org/html/rfc5988#section-5). + + This will include a link with relation type `next` to the + + next page (containing `pageId` query parameter), if there is a + next page. + '400': + description: | + with codes + * **INVALID_PAGE_ID** - provided page id is invalid + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Search jobs by params. + tags: + - jobs + summary: Search jobs + operationId: jobs.all + security: + - key: [] + - oauth: + - jobs_read + parameters: + - $ref: '#/components/parameters/language' + - in: query + description: >- + full-text search query based on a job title; case insensitive; e.g. + java developer + name: q + required: false + schema: + type: string + - in: query + description: number of elements to return. max value is 100 + name: limit + required: false + schema: + type: integer + minimum: 1 + maximum: 100 + default: 10 + - in: query + description: >- + number of elements to skip while processing result; this method of + paging is very slow and is deprecated, please use `pageId` instead + name: offset + required: false + deprecated: true + schema: + type: integer + minimum: 0 + default: 0 + maximum: 10000000 + - in: query + description: >- + unique identifier for next page of jobs - returned as `nextPageId` + in previous page result. You must set `job_id` value for `sort` + parameter if you use `pageId`. + name: pageId + required: false + schema: + type: string + - in: query + description: >- + Order in which results are returned. + + - default - sorts results by creation date or by match score and + creation date if query (q) is set. Can't be used with pageId + parameter (request might not return all results) + + - job_id - sorts results by job id. The only supported sorting order + when using pageId based pagination. + name: sort + required: false + schema: + type: string + enum: + - default + - job_id + - in: query + description: >- + city filter (part of the location object); can be used repeatedly; + case sensitive; e.g. San Francisco + name: city + required: false + explode: true + schema: + type: array + items: + type: string + - in: query + description: >- + department filter (by department label); can be used repeatedly; + case sensitive; e.g. “Marketing” + name: department + required: false + explode: true + schema: + type: array + items: + type: string + - in: query + description: >- + ISO8601-formatted time boundaries for the job update time, Format: + yyyy-MM-ddTHH:mm:ss.SSSZZ + name: updatedAfter + required: false + schema: + type: string + format: date-time + - in: query + description: > + ISO8601-formatted time boundaries for the job lastActivityOn time, + Format: yyyy-MM-ddTHH:mm:ss.SSSZZ. + + lastActivityOn is updated when job is edited, new candidates apply + or job is published. + name: lastActivityAfter + required: false + schema: + type: string + format: date-time + - in: query + description: | + Exceptions to the language code ISO format: + * "en-GB" - "English - English (UK)" + * "es-MX" - "Spanish - español (México)" + * "fr-CA" - "French - français (Canada)" + * "pt-BR" - "Portugal - português (Brasil)" + * "zh-TW" - "Chinese (Traditional) - 中文 (香港)" + * "zh-CN" - "Chinese (Simplified) - 中文 (简体)" + + + Value "pt-PT" is deprecated and will not work, use "pt" instead. + name: language + required: false + schema: + type: string + enum: + - af + - am + - ar + - az + - bg + - bn + - ca + - cs + - cy + - da + - de + - el + - en + - en-GB + - es + - es-MX + - et + - eu + - fa + - fi + - fil + - fr + - fr-CA + - ga + - gl + - gu + - he + - hi + - hr + - hu + - hy + - id + - is + - it + - ja + - ka + - km + - kn + - ko + - lo + - lt + - lv + - ml + - mn + - mr + - ms + - ne + - nl + - 'no' + - pl + - pt + - pt-BR + - ro + - ru + - si + - sk + - sl + - sr + - sv + - sw + - ta + - te + - tr + - uk + - ur + - vi + - zh-CN + - zh-TW + - zu + - in: query + description: | + Status of a job + name: status + required: false + schema: + type: string + enum: + - CREATED + - SOURCING + - FILLED + - INTERVIEW + - OFFER + - CANCELLED + - ON_HOLD + - in: query + description: | + Posting status of a job + name: postingStatus + required: false + schema: + type: string + enum: + - PUBLIC + - INTERNAL + - NOT_PUBLISHED + - PRIVATE + post: + responses: + '201': + description: Created job + content: + application/json: + schema: + $ref: '#/components/schemas/JobDetails' + '400': + description: > + with codes + + * **DEPARTMENT_NOT_FOUND** when provided department does not exist, + + * **INDUSTRY_NOT_FOUND** when provided industry does not exist, + + * **FUNCTION_NOT_FOUND** when provided function does not exist, + + * **TYPE_OF_EMPLOYMENT_NOT_FOUND** when provided type of employment + does not exist, + + * **JOB_AD_LANGUAGE_NOT_FOUND** when provided job ad language does + not exist, + + * **EEO_CATEGORY_NOT_FOUND** when provided eeo category does not + exist, + + * **EXPERIENCE_LEVEL_NOT_FOUND** when provided experience level does + not exist, + + * **CITY_NOT_FOUND** when provided city does not exist, + + * **INVALID_GEO_DATA** when latitude or longitude parameters are + invalid + + * **JOB_PROPERTY_REQUIRED** when some job property is required to + create job, + + * **JOB_PROPERTY_PARENT_VALUE_MISSING** when job property is set but + value for its parent is missing, + + * **INVALID_JOB_PROPERTY_VALUE_ID** when provided job property value + id does not exist for required property, + + * **INVALID_JOB_PROPERTY_VALUE_TYPE** when invalid value type is + used for job property, + + * **JOB_PROPERTY_VALUE_NOT_AVAILABLE_FOR_SELECTED_PARENT_VALUE** + when job property's value is not available for selected parent + value, + + * **VALUE_INACTIVE** when job property's value is not active and + cannot be set. + + * **INVALID_TEXT_FORMAT** when job property's value contains invalid + text + + * **INVALID_BRAND_VALUE** when provided brand value is invalid + + * **TYPE_OF_EMPLOYMENT_NOT_ALLOWED** when provided type of + employment is not allowed in country + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: | + with codes + * **JOB_TEMPLATES_MANAGEMENT_FORBIDDEN** when not allowed to create + job templates. + * **PERMISSION_DENIED** when job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: > + with code + + * **REF_NUMBER_ALREADY_EXISTS** when provided ref number already + exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Input validation fails + description: >- + Create a new job. Ignores all nonexistent job properties and job + properties values. + tags: + - jobs + summary: Create a new job + operationId: jobs.create + security: + - key: [] + - oauth: + - jobs_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/JobInput' + description: Job object that needs to be created + /jobs/{jobId}: + parameters: + - $ref: '#/components/parameters/jobId' + get: + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: Job + content: + application/json: + schema: + $ref: '#/components/schemas/JobDetails' + '401': + description: Job access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get content of a job with a given id. + tags: + - jobs + summary: Get content of a job with a given id. + operationId: jobs.get + security: + - key: [] + - oauth: + - jobs_read + patch: + responses: + '200': + description: Updated job + content: + application/json: + schema: + $ref: '#/components/schemas/JobDetails' + '400': + description: > + with codes + + * **DEPARTMENT_NOT_FOUND** when provided department does not exist, + + * **INDUSTRY_NOT_FOUND** when provided industry does not exist, + + * **FUNCTION_NOT_FOUND** when provided function does not exist, + + * **TYPE_OF_EMPLOYMENT_NOT_FOUND** when provided type of employment + does not exist, + + * **JOB_AD_LANGUAGE_NOT_FOUND** when provided job ad language does + not exist, + + * **EEO_CATEGORY_NOT_FOUND** when provided eeo category does not + exist, + + * **JOB_PROPERTY_REQUIRED** when some job property is required, + + * **INVALID_JOB_PROPERTY_VALUE_ID** when provided job property value + id does not exist for required property, + + * **INVALID_JOB_PROPERTY_VALUE_TYPE** when invalid value type is + used for job property, + + * **VALUE_INACTIVE** when job property's value is not active and + cannot be set. + + * **INVALID_TEXT_FORMAT** when job property's value contains invalid + text + + * **INVALID_BRAND_VALUE** when provided brand value is invalid + + * **TYPE_OF_EMPLOYMENT_NOT_ALLOWED** when provided type of + employment is not allowed in country + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Job access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with code + + * **JOB_TEMPLATES_MANAGEMENT_FORBIDDEN** when not allowed to change + job to a job template. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Input validation fails + description: >- + Update a job. All attributes that are used when creating a job can be + used. Ignores all nonexistent job properties and job properties values. + tags: + - jobs + summary: Update a job + operationId: jobs.patch + security: + - key: [] + - oauth: + - jobs_manage + requestBody: + $ref: '#/components/requestBodies/JSONPatch' + put: + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JobDetails' + '400': + description: > + with codes + + * **DEPARTMENT_NOT_FOUND** when provided department does not exist, + + * **INDUSTRY_NOT_FOUND** when provided industry does not exist, + + * **FUNCTION_NOT_FOUND** when provided function does not exist, + + * **TYPE_OF_EMPLOYMENT_NOT_FOUND** when provided type of employment + does not exist, + + * **JOB_AD_LANGUAGE_NOT_FOUND** when provided job ad language does + not exist, + + * **EEO_CATEGORY_NOT_FOUND** when provided eeo category does not + exist, + + * **JOB_PROPERTY_REQUIRED** when some job property is required to + create job, + + * **INVALID_JOB_PROPERTY_VALUE_ID** when provided job property value + id does not exist for required property, + + * **INVALID_JOB_PROPERTY_VALUE_TYPE** when invalid value type is + used for job property, + + * **VALUE_INACTIVE** when job property's value is not active and + cannot be set. + + * **INVALID_TEXT_FORMAT** when job property's value contains invalid + text + + * **INVALID_BRAND_VALUE** when provided brand value is invalid + + * **TYPE_OF_EMPLOYMENT_NOT_ALLOWED** when provided type of + employment is not allowed in country + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Job access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with code + + * **JOB_TEMPLATES_MANAGEMENT_FORBIDDEN** when not allowed to create + job templates. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Input validation fails + description: >- + Enables you to update job and it's jobAd. This operation requires + passing a job id within path and job's new state within body of the PUT + request. Ignores all nonexistent job properties and job properties + values. However jobAd and all it's properties need to be provided. All + jobAd's properties will be removed if not provided. Returns an updated + job with jobAd. + tags: + - jobs + summary: Updates job + operationId: jobs.update + security: + - key: [] + - oauth: + - jobs_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/JobInput' + description: Job that needs to be updated + /jobs/{jobId}/status: + parameters: + - $ref: '#/components/parameters/jobId' + put: + responses: + '201': + description: Updated job status + content: + application/json: + schema: + $ref: '#/components/schemas/JobStatusUpdate' + '403': + description: Job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Job not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - jobs + summary: Updates job status + operationId: jobs.status.update + security: + - key: [] + - oauth: + - jobs_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/JobStatusUpdate' + required: true + /jobs/{jobId}/status/history: + parameters: + - $ref: '#/components/parameters/jobId' + get: + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: Job status history + content: + application/json: + schema: + $ref: '#/components/schemas/JobStatusHistory' + '401': + description: Job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - jobs + summary: Job status history + operationId: jobs.status.history.get + security: + - key: [] + - oauth: + - jobs_read + /jobs/{jobId}/approvals/latest: + parameters: + - $ref: '#/components/parameters/jobId' + get: + parameters: + - $ref: '#/components/parameters/language' + responses: + '200': + description: Job details of latest approval request + content: + application/json: + schema: + $ref: '#/components/schemas/JobApproval' + '401': + description: Job access forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with codes + + * **NO_ACCESS_TO_APPROVALS** when not permitted to access job + approvals + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes + * **APPROVALS_NOT_FOUND** There is no approval for current job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - jobs + summary: Get latest approval request for given job + operationId: jobs.approvals.latest + security: + - key: [] + - oauth: + - jobs_read + /job-applications/{jobApplicationId}: + parameters: + - $ref: '#/components/parameters/JobApplicationId' + get: + responses: + '200': + description: Job application + content: + application/json: + schema: + $ref: '#/components/schemas/JobApplication' + '400': + description: | + with codes: + * **INVALID_JOB_APPLICATION_ID** when invalid jobApplicationId + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **JOB_APPLICATION_NOT_FOUND** when job application not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: Get a job application for given job application ID. + operationId: job-applications.getById + tags: + - job-applications + summary: Get a job application + security: + - key: [] + - oauth: + - job_applications_read + /messages/shares: + post: + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/MessageDetails' + '400': + description: > + with codes: + + * **INVALID_VISIBILITY_OPTIONS** when specifying openNote and + everyone flag set to true in the same time, + + * **JOB_NOT_FOUND** when sharing with hiring team of jobs that do + not exist, + + * **NO_ACCESS_TO_CANDIDATE** when tagging candidate you do not have + access to, + + * **MENTIONED_USERS_NOT_FOUND** when mentioning users that do not + exist, + + * **SHARED_WITH_USERS_NOT_FOUND** when sharing with users that do + not exist, + + * **TOO_MANY_RECIPIENTS**, when more than 100 message recipients in + total (mentioned directly or being a part of mentioned hiring teams) + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + How does it work: + + * In **content** field, provide a text to be shared. + + * @-mention users to send them an email + * In **content** field use **@[USER:id]** to mention a User, e.g. @[USER:324132421] + * Email responses are added as comments to your update + + * \#-tag candidates to link updates to their profiles + * In **content** field use **#[CANDIDATE:id]** to tag a candidate, e.g. #[CANDIDATE:9847954623] + * Use **shareWith** to share a feed update with individuals, hiring + teams or everyone + * In **users** field, provide an array of User IDs with which you want to share, e.g. "users": ["12343542356","12343542357"]. + * In **hiringTeamOf** field, provide an array of Job IDs, this will share message with a full hiring team of those jobs, e.g. "hiringTeamOf": ["123423432322","123423432324"]. + * **everyone** flag allows sharing with everyone in a company. If not provided, defaults to **false**. + * **openNote** flag allows sharing with everyone in a company that has access to the candidate. If not provided, defaults to **false** + tags: + - messages + summary: >- + Shares new messages on Hireloop with Users, Hiring Teams or Everyone and + sends emails. + operationId: messages.shares.create + security: + - key: [] + - oauth: + - messages_write + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Message' + description: Message to post + /messages/shares/{id}: + delete: + responses: + '204': + description: Message successfully deleted + '403': + description: No permission to delete a message + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Message not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Delete a message with a given id. Deleted message is no longer visible + on Hireloop. + tags: + - messages + summary: Delete a message + operationId: messages.shares.delete + security: + - key: [] + - oauth: + - messages_manage + parameters: + - $ref: '#/components/parameters/MessageId' + /messages: + get: + responses: + '200': + description: Messages successfully fetched + content: + application/json: + schema: + $ref: '#/components/schemas/MessagesView' + headers: + Link: + schema: + type: string + description: > + Links to related resources, in the format defined by + + [RFC 5988](https://tools.ietf.org/html/rfc8288#section-3). + + This will include a link with relation type `next` to the + + next page (containing `pageId` query parameter), if there is a + next page. + '400': + description: > + with codes: + + * **CANDIDATE_NOT_FOUND** when candidate with given id does not + exist + + * **JOB_NOT_FOUND** when job with given id does not exist + + * **APPLICATION_NOT_FOUND** when candidate does not have application + for given job + '403': + description: No permission to access messages + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Search for messages of given candidate. Use jobId parameter to filter + results to messages only for specific job application. Accessible only + for users with ADMINISTRATOR role. + tags: + - messages + summary: Fetch messages + operationId: messages.fetch + security: + - key: [] + - oauth: + - messages_read + parameters: + - $ref: '#/components/parameters/CandidateId' + - $ref: '#/components/parameters/JobId' + - $ref: '#/components/parameters/PageId' + - $ref: '#/components/parameters/Limit' + /candidates/{id}/jobs/{jobId}/offers: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + get: + responses: + '200': + description: Candidate's offers + content: + application/json: + schema: + $ref: '#/components/schemas/Offers' + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: | + with code **NO_ACCESS_TO_OFFERS** when not permitted to see offers + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Offers not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - offers + summary: Get candidate's offers + operationId: candidates.offers.all + security: + - key: [] + - oauth: + - candidates_offers_read + /candidates/{id}/jobs/{jobId}/offers/{offerId}: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + get: + responses: + '200': + description: Candidate's offer + content: + application/json: + schema: + $ref: '#/components/schemas/Offer' + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: | + with code **NO_ACCESS_TO_OFFERS** when not permitted to see offers + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Offer not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - offers + summary: Get candidate's offer + operationId: candidates.offers.get + security: + - key: [] + - oauth: + - candidates_offers_read + parameters: + - in: path + description: Identifier of a Offer + name: offerId + required: true + schema: + type: string + /candidates/{id}/jobs/{jobId}/offers/{offerId}/approvals/latest: + parameters: + - $ref: '#/components/parameters/candidateId' + - $ref: '#/components/parameters/jobId' + get: + responses: + '200': + description: Latest approval request for given offer + content: + application/json: + schema: + $ref: '#/components/schemas/ApprovalRequest' + '401': + description: Candidate access denied + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with code + + * **NO_ACCESS_TO_OFFERS** when not permitted to see offers * + **NO_ACCESS_TO_APPROVALS** when not permitted to access offer + approvals + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with code + * **OFFERS_NOT_FOUND** + * **APPROVALS_NOT_FOUND** + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - offers + summary: Get latest approval request for candidate's offer + operationId: candidates.offers.approvals.latest + security: + - key: [] + - oauth: + - candidates_offers_read + parameters: + - in: path + description: Identifier of a Offer + name: offerId + required: true + schema: + type: string + /offers: + get: + responses: + '200': + description: Offers matching search criteria. + content: + application/json: + schema: + $ref: '#/components/schemas/Offers' + '403': + description: | + with code **NO_ACCESS_TO_OFFERS** when not permitted to see offers + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + default: + description: List of found offers + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiListResult' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiListResult' + tags: + - offers + summary: Search offers by criteria + operationId: searchOffers + security: + - key: [] + parameters: + - name: limit + in: query + description: >- + number of offers to return. max number of offers returned by single + call is 100 + schema: + type: integer + format: int32 + - name: offset + in: query + description: number of offers to skip while processing result + schema: + type: integer + format: int32 + - name: status + in: query + description: >- + offer status; available values are: INACTIVE, UNDER_REVIEW, ACTIVE, + REJECTED + schema: + type: string + - name: q + in: query + description: >- + full text query. will match offers with name and description + matching query string + schema: + type: string + - name: postingId + in: query + description: >- + id of a job posting; allows getting offer information using Posting + Id coming from Job Board API; not relevant for Assessment vendors + schema: + type: string + description: >- + Enables you to get a list of existing offers. The number of offers + returned as part of the list can be modified using the offset and limit + parameters. These results will be sorted using lastUpdateDate. + deprecated: true + post: + tags: + - offers + summary: Create offer + description: >- + Enables you to insert new offers. This operation requires passing an Offer + object as part of a POST request. + operationId: create + requestBody: + description: >- + Offer + object that needs to be passed over. Please see the Model Schema on + the right. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiOffer' + responses: + default: + description: New offer created + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiOffer' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiOffer' + deprecated: true + security: + - key: [] + /offers/{offerId}/documents: + get: + responses: + '200': + description: List of documents related to sent offer. + content: + application/json: + schema: + $ref: '#/components/schemas/OfferDocumentsList' + '400': + description: Malformed request. ID format is invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Offer not found or lack of access to the offer. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Offer has not been sent to the candidate. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Offer was sent with an unsupported provider. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - offers + summary: Get a list of documents related to sent offer. + operationId: offers.documents.getDocumentsList + security: + - key: [] + - oauth: + - candidates_offers_read + parameters: + - in: path + description: Identifier of an offer. + name: offerId + required: true + schema: + type: string + /offers/{offerId}/documents/{documentId}: + get: + tags: + - offers + summary: Get a given document in a given sent offer + operationId: offers.documents.getDocument + parameters: + - name: offerId + description: Identifier of an offer. + in: path + required: true + schema: + type: string + - name: documentId + description: Identifier of a document. + in: path + required: true + schema: + type: string + responses: + '200': + description: Requested file. + content: + application/octet-stream: + schema: + format: binary + '400': + description: Malformed request. ID format is invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + Forbidden from downloading offer because of detected malware in + document. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Offer or document not found or lack of access. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Offer was not sent to the candidate. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Offer was sent with an unsupported provider. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - key: [] + - oauth: + - candidates_offers_read + /assessments/{assessmentOrderId}/comments/{commentId}: + get: + tags: + - comments + summary: Get comment by id + description: Getting details of a comment in a particular assessment order. + operationId: getComment + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + - name: commentId + in: path + description: unique id of an assessment comment + required: true + schema: + type: string + responses: + default: + description: Assessment comment + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentComment' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentComment' + deprecated: true + security: + - key: [] + /assessments/{assessmentOrderId}/comments: + get: + tags: + - comments + summary: List comments + description: >- + Enables you to get a list of comments associated with a particular + assessment order. + operationId: listComments + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + - name: limit + in: query + description: >- + number of comments to return. max number of comments returned by + single call is 100 + schema: + type: string + - name: offset + in: query + description: number of comments to skip while processing result + schema: + type: string + responses: + default: + description: List of assessment comments + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentCommentListResult' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentCommentListResult' + deprecated: true + security: + - key: [] + post: + tags: + - comments + summary: Add new comment + description: Adding new comment to an assessment order. + operationId: insertComment + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + requestBody: + description: >- + Body object that should contain author information (it's not required + but this will be displayed as author of the message). Message is + required (which will be displayed to SmartRecruiters user). Please see + the Model Schema on the right. + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiCommentRequest' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiCommentRequest' + required: true + responses: + default: + description: New assessment comment added + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentComment' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentComment' + deprecated: true + security: + - key: [] + /assessments/{assessmentOrderId}/results/{resultId}/attachments/{attachmentId}: + get: + tags: + - attachments + summary: Get assessment attachment + description: Enables you to get details of attachments in a particular assessment. + operationId: getAttachment + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + - name: resultId + in: path + description: unique result id + required: true + schema: + type: string + - name: attachmentId + in: path + description: unique id of an attachment + required: true + schema: + type: string + responses: + default: + description: Assessment attachment + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentAttachment' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentAttachment' + deprecated: true + security: + - key: [] + post: + tags: + - attachments + summary: Update assessment attachment + description: >- + Enables you to update ( replace ) files already submitted to assessment + result. + operationId: updateAttachment + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + - name: resultId + in: path + description: unique result id + required: true + schema: + type: string + - name: attachmentId + in: path + description: unique id of an attachment + required: true + schema: + type: string + requestBody: + description: >- + Attachment file - we accept only PDF files with max size: 20 * 1024 * + 1024. + content: + multipart/form-data: + schema: + $ref: '#/components/schemas/ApiAttachment' + required: true + responses: + default: + description: Assessment attachment updated + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentAttachment' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentAttachment' + deprecated: true + security: + - key: [] + /assessments/{assessmentOrderId}/results/{resultId}/attachments: + get: + tags: + - attachments + summary: List assessment results + description: >- + Enables you to get a list of attachments submitted to a particular + assessment result. + operationId: listAttachmentResults + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + - name: resultId + in: path + description: unique result id + required: true + schema: + type: string + - name: limit + in: query + description: number of elements to return. max value is 100 + schema: + type: integer + format: int32 + - name: offset + in: query + description: number of elements to skip while processing result + schema: + type: integer + format: int32 + responses: + default: + description: Assessment attachment list + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentAttachmentListResult' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentAttachmentListResult' + deprecated: true + security: + - key: [] + post: + tags: + - attachments + summary: Attach assessment results + description: Enables you to attach files to and submit a new assessment result. + operationId: insertAttachment + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + - name: resultId + in: path + description: unique result id + required: true + schema: + type: string + requestBody: + description: >- + Attachment file - we accept only PDF files with max size: 20 * 1024 * + 1024. + content: + multipart/form-data: + schema: + $ref: '#/components/schemas/ApiAttachment' + required: true + responses: + default: + description: File attached to assessment result + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentAttachment' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentAttachment' + deprecated: true + security: + - key: [] + /assessments/{assessmentOrderId}/results/{resultId}: + get: + tags: + - results + summary: Get assessment results by id + description: Enables you to get details of a particular assessment result. + operationId: getResult + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + - name: resultId + in: path + description: unique id of an assessment result + required: true + schema: + type: string + responses: + default: + description: Assessment result + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentResult' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentResult' + deprecated: true + security: + - key: [] + /assessments/{assessmentOrderId}/results: + get: + tags: + - results + summary: List assessment results + description: >- + Enables you to get a list of results submitted to a particular + assessment order. + operationId: listResults + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + - name: limit + in: query + description: number of elements to return. max value is 100 + schema: + type: integer + format: int32 + - name: offset + in: query + description: number of elements to skip while processing result + schema: + type: integer + format: int32 + responses: + default: + description: Assessment result list + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentResultListResult' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentResultListResult' + deprecated: true + security: + - key: [] + post: + tags: + - results + summary: Submit assessment results + description: Enables you to submit a new assessment result. + operationId: insertResult + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + requestBody: + description: >- + AssessmentResult + object that should contain author information (it's not required but + this will be displayed as author of the message) and score (which will + be displayed to SmartRecruiters user). Please see the Model Schema on + the right. + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentResult' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentResult' + responses: + default: + description: New assessment result submitted + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentResult' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentResult' + deprecated: true + security: + - key: [] + /assessments/{assessmentOrderId}/accept: + post: + tags: + - assessments + summary: Accept Assessment order + description: Enables you to accept an assessment order. + operationId: acceptAssessmentOrder + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + requestBody: + description: >- + Body object that should contain author information (it's not required + but this will be displayed as author of the message). Message is + required (which will be displayed to SmartRecruiters user). Please see + the Model Schema on the right. + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiCommentRequest' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiCommentRequest' + required: true + responses: + default: + description: Assessment order accepted + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrder' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrder' + deprecated: true + security: + - key: [] + /assessments/{assessmentOrderId}/complete: + post: + tags: + - assessments + summary: Complete Assessment order + description: Enables you to mark the status of an assessment order as COMPLETED. + operationId: completeAssessmentOrder + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + requestBody: + description: >- + Body object that should contain author information (it's not required + but this will be displayed as author of the message). Message is + required (which will be displayed to SmartRecruiters user). Please see + the Model Schema on the right. + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiCommentRequest' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiCommentRequest' + required: true + responses: + default: + description: Assessment order completed + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrder' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrder' + deprecated: true + security: + - key: [] + /assessments/{assessmentOrderId}: + get: + tags: + - assessments + summary: Get Assessment Order by id + description: Get Assessment Order details by ID. + operationId: getAssessmentOrder + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + responses: + default: + description: Assessment order + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrder' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrder' + deprecated: true + security: + - key: [] + /assessments: + get: + tags: + - assessments + summary: Get Assessment orders by criteria + description: Get list of Assessment Orders. + operationId: getAssessments + parameters: + - name: limit + in: query + description: number of elements to return. max value is 100 + schema: + type: integer + format: int32 + - name: offset + in: query + description: number of elements to skip while processing result + schema: + type: integer + format: int32 + - name: status + in: query + description: >- + assessment order status; available values: NEW, IN_PROGRESS, + REJECTED, COMPLETED + schema: + type: string + - name: fromDate + in: query + description: >- + createDate filter. search will return only orders created after + given date. Date format need to comply with ISO8601 format: + yyyy-MM-ddTHH:mm:ss.SSSZZ + schema: + type: string + - name: toDate + in: query + description: >- + createDate filter. search will return only orders created before + given date. Date format need to comply with ISO8601 format: + yyyy-MM-ddTHH:mm:ss.SSSZZ + schema: + type: string + - name: sortBy + in: query + description: 'sorting criteria. Available options: createDate' + schema: + type: string + - name: sortDir + in: query + description: 'sorting direction. Available options: asc, desc' + schema: + type: string + default: asc + - name: candidateUuid + in: query + description: >- + UUID of a candidate. Corresponds to candidate ID used in Customer + API + schema: + type: string + - name: jobUuid + in: query + description: UUID of a job. Corresponds to job ID used in Customer API + schema: + type: string + responses: + default: + description: Assessment order list + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrderListResult' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrderListResult' + deprecated: true + security: + - key: [] + post: + tags: + - assessments + summary: >- + insert new Assessment order - end point for testing only - it will not + create valid assessment order + operationId: insertAssessmentOrder + requestBody: + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrderRequest' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrderRequest' + responses: + default: + description: Assessment order inserted + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrder' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrder' + deprecated: true + security: + - key: [] + /assessments/{assessmentOrderId}/reject: + post: + tags: + - assessments + summary: Reject Assessment order + description: Enables you to reject an assessment order. + operationId: rejectAssessmentOrder + parameters: + - name: assessmentOrderId + in: path + description: unique id of an assessment order + required: true + schema: + type: string + requestBody: + description: >- + Body object that should contain author information (it's not required + but this will be displayed as author of the message). Message is + required (which will be displayed to SmartRecruiters user) and should + contain details on why the order has been rejected. Please see the + Model Schema on the right. + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiCommentRequest' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiCommentRequest' + required: true + responses: + default: + description: Assessment order rejected + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrder' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiAssessmentOrder' + deprecated: true + security: + - key: [] + /configs: + get: + tags: + - configs + summary: Fetch list of vendor configs + description: Enables you to get all specified configuration entries. + operationId: getConfigs + responses: + default: + description: Configs list + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiConfigListResult' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiConfigListResult' + deprecated: true + security: + - key: [] + post: + tags: + - configs + summary: Add new config + description: >- + Enables you to add a new config to the configs list. This operation + requires passing an instance of the Config + object with the Id and Value fields set. An update is performed if the + ID that you pass already exists. + operationId: addConfig + requestBody: + description: >- + Config + object that needs to contain Id and Value set. Please see the Model + Schema on the right. + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/Config' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Config' + responses: + default: + description: New config added + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/Config' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Config' + deprecated: true + security: + - key: [] + /configs/{configId}: + get: + tags: + - configs + summary: Get config for vendor + description: Enables you to get the config value for a given Id. + operationId: getConfig + parameters: + - name: configId + in: path + description: unique id of a config entry + required: true + schema: + type: string + responses: + default: + description: Config + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/Config' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Config' + deprecated: true + security: + - key: [] + post: + tags: + - configs + summary: Update config + description: >- + Enables you to update config in the configs list. This operation + requires passing a config id and instance of the Config + object with the Id and Value fields set. + operationId: updateConfig + parameters: + - name: configId + in: path + description: unique id of a config entry + required: true + schema: + type: string + requestBody: + description: >- + Config + object that needs to contain Id and Value set. Please see the Model + Schema on the right. + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/Config' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Config' + responses: + default: + description: Config updated + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/Config' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Config' + deprecated: true + security: + - key: [] + /offers/{offerId}: + get: + tags: + - offers + summary: Get offer by id + description: >- + Enables you to get offer details. This operation requires passing an + offer id as part of the REQUEST parameter. + operationId: getOffer + parameters: + - name: offerId + in: path + description: unique id of an offer + required: true + schema: + type: string + responses: + default: + description: Offer + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiOffer' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiOffer' + deprecated: true + security: + - key: [] + post: + tags: + - offers + summary: Update offer + description: >- + Enables you to Update existing offers. This operation requires passing + an offer id being changed and an Offer + object as part of the POST request. + operationId: update + parameters: + - name: offerId + in: path + description: unique id of an offer + required: true + schema: + type: string + requestBody: + description: >- + Offer + object that needs to be passed over. Please see the Model Schema on + the right. Required fields are: id, catalogId, name, description, + Terms. + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiOffer' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiOffer' + responses: + default: + description: Offer updated + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiOffer' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiOffer' + deprecated: true + security: + - key: [] + /offers/{offerId}/submit: + post: + tags: + - offers + summary: Submit offer + description: >- + Enables you to submit an offer for review. This operation requires + passing an offer ID as part of the REQUEST parameter. + operationId: submit + parameters: + - name: offerId + in: path + description: unique id of an offer + required: true + schema: + type: string + responses: + default: + description: Offer submitted for review + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiOffer' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiOffer' + deprecated: true + security: + - key: [] + /offers/{offerId}/withdraw: + post: + tags: + - offers + summary: Withdraw offer + description: >- + Enables you to withdrawing an offer from the marketplace. This operation + requires passing an offer id as part of a REQUEST parameter. After a + successful withdraw, the offer is not available in the marketplace + anymore. + operationId: withdraw + parameters: + - name: offerId + in: path + description: unique id of an offer + required: true + schema: + type: string + responses: + default: + description: Offer withdrawn + content: + application/json;charset=UTF-8: + schema: + $ref: '#/components/schemas/ApiOffer' + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ApiOffer' + deprecated: true + security: + - key: [] + /v1/companies/{companyIdentifier}/postings: + get: + responses: + '200': + description: OK + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/PostingList' + description: Lists active postings published by given company. Return PostingList + tags: + - postings + summary: Lists active postings published by given company + operationId: v1.listPostings + security: + - {} + - key: [] + parameters: + - in: header + description: Language of translation + name: accept-language + schema: + $ref: '#/components/schemas/JobAdLanguageCode' + - in: path + description: Identifier of a company + name: companyIdentifier + required: true + schema: + type: string + - in: query + description: full-text search query based on a job title, location + name: q + required: false + schema: + type: string + - in: query + description: number of elements to return. max value is 100 + name: limit + required: false + schema: + type: integer + - in: query + description: number of elements to skip while processing result + name: offset + required: false + schema: + type: integer + - in: query + description: > + Filter indicating which postings to return: + + * **PUBLIC**: response will include ONLY public postings + + * **INTERNAL**: response will include ONLY internal postings + + * **INTERNAL_OR_PUBLIC**: response will include internal postings or + public postings, but not both for a single job. If a job has both + types of postings, only internal postings will be returned. NOTE: + when selected, all postings, internal and public, will be treated as + internal. Among other things, this means that screening questions + will not be displayed, and candidates will be marked with the + EMPLOYEE label. + name: destination + required: false + schema: + type: string + enum: + - PUBLIC + - INTERNAL + - INTERNAL_OR_PUBLIC + - in: query + description: > + Filter indicating which postings to return: + + * **REMOTE**: response will include ONLY postings with remote + location type + + * **ONSITE**: response will include ONLY postings with onsite + location type + + * **ANY**: response will include ANY location type + name: locationType + required: false + schema: + type: string + enum: + - REMOTE + - ONSITE + - ANY + - in: query + description: country code filter (part of the location object) + name: country + required: false + schema: + type: string + - in: query + description: region filter (part of the location object) + name: region + required: false + schema: + type: string + - in: query + description: city filter (part of the location object) + name: city + required: false + schema: + type: string + - in: query + description: department filter (department id) + name: department + required: false + schema: + type: string + - in: query + description: > + Job ad language; accepts 2-letter ISO 639-1 language code; multiple + codes can be provided, separated by comma (",") + + Exceptions to the language code ISO format: + + * "en-GB" - "English - English (UK)" + + * "fr-CA" - "French - français (Canada)" + + * "pt-BR" - "Portugal - português (Brasil)" + + * "pt-PT" - "Portugal - português (Portugal)" + + * "zh-TW" - "Chinese (Traditional) - 中文 (香港)" + + * "zh-CN" - "Chinese (Simplified) - 中文 (简体)" + name: language + required: false + schema: + type: array + items: + $ref: '#/components/schemas/JobAdLanguageCode' + - in: query + description: | + Released after filter (ISO8601-formatted) + Format: yyyy-MM-ddTHH:mm:ss.SSSZZ + name: releasedAfter + required: false + schema: + type: string + format: date-time + - in: query + description: > + Filters postings by custom fields. Multiple custom field values can + be provided, separated by comma (","). + + Format: + custom_field.CUSTOM_FIELD_ID=CUSTOM_FIELD_VALUE1_ID,CUSTOM_FIELD_VALUE2_ID + name: customField + required: false + style: form + schema: + type: object + propertyNames: + pattern: ^custom_field\.[^\s]+$ + additionalProperties: + type: string + pattern: ^[^\s]+$ + examples: + - custom_field.52d95747e4b0ba7acb9217ea: 23aba1d4-4c81-48f7-9ae2-3ab84ee32a80 + /v1/companies/{companyIdentifier}/postings/{postingId}: + get: + responses: + '200': + description: OK + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/Posting' + description: >- + Note: In order to update content of a job posting available via the + Posting API, you need to re-post the job in SmartRecruiters application. + tags: + - postings + summary: Get posting by posting id or uuid for given company + operationId: v1.getPosting + security: + - {} + - key: [] + parameters: + - in: header + description: Language of translation + name: accept-language + schema: + $ref: '#/components/schemas/JobAdLanguageCode' + - in: path + description: Identifier of a company + name: companyIdentifier + required: true + schema: + type: string + - in: path + description: Posting identifier or uuid + name: postingId + required: true + schema: + type: string + - in: query + description: >- + sourceTypeId can be retrieved using [get + /configuration/sources](https://developers.smartrecruiters.com/reference/configurationsourcetypes-1) + endpoint. Used together with **sourceId** and **sourceSubTypeId** to + add source tracking parameter to **applyUrl**. + name: sourceTypeId + required: false + schema: + type: string + - in: query + description: >- + sourceSubTypeId can be retrieved using [get + /configuration/sources](https://developers.smartrecruiters.com/reference/configurationsourcetypes-1) + endpoint. Used together with **sourceId** and **sourceTypeId** to + add source tracking parameter to **applyUrl**. + name: sourceSubTypeId + required: false + schema: + type: string + - in: query + description: >- + sourceId can be retrieved using [get + /configuration/sources/{sourceType}/values](https://developers.smartrecruiters.com/reference/configurationsourcevaluesall-1) + endpoint. Used together with **sourceTypeId** and + **sourceSubTypeId** to add source tracking parameter to + **applyUrl**. + name: sourceId + required: false + schema: + type: string + /v1/companies/{companyIdentifier}/departments: + get: + responses: + '200': + description: OK + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/Departments' + description: List departments for given company. + tags: + - postings + summary: List departments for given company + operationId: v1.listDepartments + security: + - {} + - key: [] + parameters: + - in: header + description: Language of translation + name: accept-language + schema: + $ref: '#/components/schemas/JobAdLanguageCode' + - in: path + description: Identifier of a company + name: companyIdentifier + required: true + schema: + type: string + /files/{reportFileId}/data: + get: + tags: + - files + summary: Download report file + description: > + Use this endpoint to download a specific report file. The response + contains report data in CSV format. + + ### Note + + It is not recommended to attempt downloading large report files via Live + Docs or Internet Browser. To get a large report file, use command line + tools or native HTTP clients. + operationId: downloadReportFile + parameters: + - name: reportFileId + in: path + description: Report file identifier + required: true + schema: + type: string + responses: + '200': + description: Successful response. + content: + text/csv: + schema: + type: string + '401': + description: Returned when a request was not authenticated. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Returned when a caller is not authorized to perform the request. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Returned when there is no report file with the given ID. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - key: [] + - oauth: + - reporting_read + /files/{reportFileId}: + get: + tags: + - files + summary: Get report file + description: Use this endpoint to get a specific report file details. + operationId: getReportFile + parameters: + - name: reportFileId + in: path + description: Report file identifier + required: true + schema: + type: string + responses: + '200': + description: Successful response. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiReportFileResponse' + '401': + description: Returned when a request was not authenticated. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Returned when a caller is not authorized to perform the request. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Returned when there is no report file with the given ID. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - key: [] + - oauth: + - reporting_read + /reports/{reportId}/files/recent/data: + get: + tags: + - reports + summary: Download most recent report file + description: > + Use this endpoint to download the most recent report file for a specific + report. The response contains report data in CSV format. In order to get + a successful response, there have to be at least 1 successfully + generated report file for the report. + + ### Etags + + Along with the successful response, the `Etag` HTTP header is returned, + containing ETag identifier of the report file. In order to save + bandwidth resources, the `If-None-Match HTTP` header containing the + recently retrieved report file ETag can be passed with the request. If + there's no report file, that is newer than the one referred in the + `If-None-Match` header, the API responds with HTTP `304 Not Modified` + status code and does not provide content. + + ### Note + + It is not recommended to attempt downloading large report files via Live + Docs or Internet Browser. To get a large report file, use command line + tools or native HTTP clients. + operationId: downloadMostRecentReportFile + parameters: + - name: If-None-Match + in: header + description: Report file ETag to be compared with the most recent report file + schema: + type: string + - name: reportId + in: path + description: Report identifier + required: true + schema: + type: string + responses: + '200': + description: Successful response. + headers: + ETag: + description: Report file ETag + style: simple + schema: + type: string + content: + text/csv: + schema: + type: string + '304': + description: Returned when there's no newer report file available. + '400': + description: Returned when the report ID is invalid. + content: + text/csv;charset=utf-8: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Returned when a request was not authenticated. + content: + text/csv;charset=utf-8: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: >- + Returned when a caller is not authorized to download the report + file. + content: + text/csv;charset=utf-8: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Returned when there is no successfully generated report file. + content: + text/csv;charset=utf-8: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - key: [] + - oauth: + - reporting_read + /reports/{reportId}/files: + get: + tags: + - reports + summary: Get report files + description: > + Use this endpoint to fetch a list of report files of a specific report. + Report files are sorted by generation date (newer report files first). + + ### Paging + + Whenever there's more data to be returned, the `nextPage` property will + contain an opaque identifier of the next page. The value can be then + passed as a page query parameter in a subsequent request. Another option + is to use the response's `Link` HTTP header, which contains a web link + to the following page, example: + + ``` + + ; + rel="link" + + ``` + operationId: getReportFiles + parameters: + - name: page + in: query + description: Opaque page identifier to be returned. + schema: + type: string + - name: limit + in: query + description: Number of entities that should be returned per page. + schema: + maximum: 1000 + minimum: 1 + type: integer + format: int32 + default: 10 + - name: reportId + in: path + description: Report identifier + required: true + schema: + type: string + responses: + '200': + description: Successful response. + headers: + Link: + description: Link to the next report files page, if available + style: simple + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/ApiReportFilesResponse' + '400': + description: >- + Returned when the report ID, page parameter or limit parameter is + invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Returned when a request was not authenticated. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Returned when a caller is not authorized to perform the request. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Returned when there is no report with the given ID. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - key: [] + - oauth: + - reporting_read + post: + tags: + - reports + summary: Generate ad-hoc report + description: >- + Use this endpoint to generate ad-hoc report. + + NOTE: Report files are generated asynchronously. Ensure the report file + status is: COMPLETED before fetching the data. To check the report file + status use the GET /reports/{reportId}/files/recent endpoint. + operationId: generateAdHocReport + parameters: + - name: reportId + in: path + description: Report identifier + required: true + schema: + type: string + responses: + '200': + description: Successful response. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiReportFileResponse' + '400': + description: >- + Returned when the report ID or the identity is invalid or the report + is already pending generation. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Returned when a request was not authenticated. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Returned when a caller is not authorized to perform the request. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Returned when there is no report with the given ID. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: Returned when the report was modified concurrently. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - key: [] + - oauth: + - reporting_write + /reports/{reportId}/files/recent: + get: + tags: + - reports + summary: Get most recent report file + description: > + Use this endpoint to get the most recent report file details for a + specific report. In order to get a successful response, there have to be + at least 1 successfully generated report file for the report. + + ### Etags + + Along with the successful response, the `Etag` HTTP header is returned, + containing ETag identifier of the report file. In order to save + bandwidth resources, the `If-None-Match HTTP` header containing the + recently retrieved report file ETag can be passed with the request. If + there's no report file, that is newer than the one referred in the + `If-None-Match` header, the API responds with HTTP `304 Not Modified` + status code and does not provide content. + operationId: getMostRecentReportFile + parameters: + - name: If-None-Match + in: header + description: Report file ETag to be compared with the most recent report file + schema: + type: string + - name: reportId + in: path + description: Report identifier + required: true + schema: + type: string + responses: + '200': + description: Successful response. + headers: + ETag: + description: Report file ETag + style: simple + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/ApiReportFileResponse' + '304': + description: Returned when there's no newer report file available. + '400': + description: Returned when the report ID is invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Returned when a request was not authenticated. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Returned when a caller is not authorized to perform the request. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Returned when there is no successfully generated report file. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - key: [] + - oauth: + - reporting_read + /reports/{reportId}: + get: + tags: + - reports + summary: Get report + description: Use this endpoint to get a specific report details. + operationId: getReport + parameters: + - name: reportId + in: path + description: Report identifier + required: true + schema: + type: string + responses: + '200': + description: Successful response. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiReportResponse' + '400': + description: Returned when the report ID is invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Returned when a request was not authenticated. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Returned when a caller is not authorized to perform the request. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: Returned when there is no report with the given ID. + security: + - key: [] + - oauth: + - reporting_read + /reports: + get: + tags: + - reports + summary: Get reports + description: > + Use this endpoint to fetch a list of reports. Reports are sorted by + modification date (newer reports first). + + ### Paging + + Whenever there's more data to be returned, the `nextPage` property will + contain an opaque identifier of the next page. The value can be then + passed as a page query parameter in a subsequent request. Another option + is to use the response's `Link` HTTP header, which contains a web link + to the following page, example: + + ``` + + ; + rel="link" + + ``` + operationId: getReports + parameters: + - name: page + in: query + description: Opaque page identifier to be returned. + schema: + type: string + - name: limit + in: query + description: Number of entities that should be returned per page. + schema: + maximum: 1000 + minimum: 1 + type: integer + format: int32 + default: 10 + responses: + '200': + description: Successful response. + headers: + Link: + description: Link to the next reports page, if available + style: simple + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/ApiReportsResponse' + '400': + description: Returned when the page parameter or limit parameter is invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: Returned when a request was not authenticated. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Returned when a caller is not authorized to perform the request. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - key: [] + - oauth: + - reporting_read + /reviews: + get: + responses: + '200': + description: Review was retreived + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Review' + '401': + description: > + with codes: + + * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is not + authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + With code **'APPLICATION_NOT_FOUND'** when there is no application + of the candidate in a the job + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - reviews + parameters: + - in: query + name: candidateId + description: ID of the candidate + required: true + schema: + $ref: '#/components/schemas/Uuid' + - in: query + name: jobId + description: ID of the job + required: true + schema: + $ref: '#/components/schemas/Uuid' + summary: Retrieves all reviews for specified candidate and job + operationId: reviews.getList + security: + - key: [] + - oauth: + - reviews_read + post: + responses: + '201': + description: Review was created + content: + application/json: + schema: + $ref: '#/components/schemas/Review' + '401': + description: > + with codes: + + * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is not + authorized to access resource + + * **REVIEWER_NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when reviewer is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden to create a review + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + When input validation fails or with codes: + + * **INVALID_OVERALL** when invalid overall + + * **NON_EXISTING_REVIEWER** when reviewer does not exist + + * **INACTIVE_OR_DELETED_REVIEWER** when reviewer is inactive or + deleted + + * **CANDIDATE_NOT_FOUND** when candidate with given id not found + + * **JOB_NOT_FOUND** when job with given id not found + + * **APPLICATION_NOT_FOUND** when application for given candidate id + and job id not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - reviews + summary: Creates a review + operationId: reviews.create + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ReviewInput' + description: Review to be created + required: true + security: + - key: [] + - oauth: + - reviews_write + /reviews/{reviewId}: + parameters: + - $ref: '#/components/parameters/ReviewId' + get: + responses: + '200': + description: Review was retreived + content: + application/json: + schema: + $ref: '#/components/schemas/Review' + '400': + description: | + with codes: + * **INVALID_REVIEW_ID** when review id is invalid + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: > + with codes: + + * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is not + authorized to access resource + + * **REVIEWER_NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when reviewer is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden to retreive a review + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **REVIEW_NOT_FOUND** when no review with given id is found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - reviews + summary: Retrieves a review + operationId: reviews.get + security: + - key: [] + - oauth: + - reviews_read + patch: + responses: + '204': + description: Review was updated + '400': + description: | + with codes: + * **INVALID_SOURCE** when review source is invalid + * **INVALID_REVIEW_ID** when review id is invalid + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: > + with codes: + + * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is not + authorized to access resource + + * **REVIEWER_NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when reviewer is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden to retreive a review + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **REVIEW_NOT_FOUND** when no review with given id is found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + When input validation fails or with codes: + + * **INVALID_OVERALL** when invalid overall + + * **NON_EXISTING_REVIEWER** when reviewer does not exist + + * **INACTIVE_OR_DELETED_REVIEWER** when reviewer is inactive or + deleted + + * **REVIEWER_ID_DOES_NOT_MATCH** when reviewer id does not match + reviewer id in review + '500': + $ref: '#/components/responses/ServerError' + tags: + - reviews + summary: Updates a review + operationId: reviews.update + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ReviewToUpdateInput' + description: Review to be updated + required: true + security: + - key: [] + - oauth: + - reviews_write + delete: + parameters: + - $ref: '#/components/parameters/ReviewerId' + responses: + '204': + description: Review was deleted + '400': + description: | + with codes: + * **INVALID_SOURCE** when review source is invalid + * **INVALID_REVIEW_ID** when review id is invalid + * **INVALID_REVIEWER_ID** when review id or employee id is invalid + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: > + with codes: + + * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is not + authorized to access resource + + * **REVIEWER_NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when reviewer is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden to retreive a review + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + with codes: + * **REVIEW_NOT_FOUND** when no review with given id is found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + When input validation fails or with codes: + + * **NON_EXISTING_REVIEWER** when reviewer does not exist + + * **INACTIVE_OR_DELETED_REVIEWER** when reviewer is inactive or + deleted + + * **REVIEWER_ID_DOES_NOT_MATCH** when reviewer id does not match + reviewer id in review + '500': + $ref: '#/components/responses/ServerError' + tags: + - reviews + summary: Deletes a review + operationId: reviews.delete + security: + - key: [] + - oauth: + - reviews_write + /new-hires/{newHireId}: + parameters: + - $ref: '#/components/parameters/NewHireId' + get: + responses: + '200': + description: New Hire details were retrieved + content: + application/json: + schema: + $ref: '#/components/schemas/NewHire' + '401': + description: > + With codes: * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + With codes: + + * **'NEW_HIRE_NOT_FOUND'** when there is no New Hire present for + given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - new-hires + summary: Returns details for a single New Hire + operationId: new-hires.get + security: + - key: [] + - oauth: + - new_hires_read + /onboarding-processes/{onboardingProcessId}: + parameters: + - $ref: '#/components/parameters/OnboardingProcessId' + get: + responses: + '200': + description: Onboarding Process details were retrieved + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardingProcess' + '401': + description: > + With codes: * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + With codes: + + * **'ONBOARDING_PROCESS_NOT_FOUND'** when there is no Onboarding + Process for given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - onboarding-processes + summary: Returns details of a single Onboarding Process + operationId: onboarding-processes.get + security: + - key: [] + - oauth: + - onboarding_processes_read + /web-form-assignments/{webFormAssignmentId}/form-answers: + parameters: + - $ref: '#/components/parameters/WebFormAssignmentId' + get: + responses: + '200': + description: Answers submitted for Web Form Assignment were retrieved + content: + application/json: + schema: + $ref: '#/components/schemas/WebFormAnswers' + '401': + description: > + With codes: * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + With codes: + + * **'WEB_FORM_ASSIGNMENT_NOT_FOUND'** when there is no Web Form + Assignment for given id + + * **'WEB_FORM_ASSIGNMENT_ANSWERS_NOT_FOUND'** when there are no Web + Form Assignment Answers for given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - assignments-submissions + summary: Returns answers submitted for a single Web Form Assignment + operationId: web-form-assignments.form-answers.get + security: + - key: [] + - oauth: + - assignments_submissions_read + /web-form-assignments/{webFormAssignmentId}/fields-metadata: + parameters: + - $ref: '#/components/parameters/WebFormAssignmentId' + get: + responses: + '200': + description: >- + The metadata of the fields that belong to a single Web Form + Assignment was retrieved + content: + application/json: + schema: + $ref: '#/components/schemas/WebFormFieldsMetadata' + '401': + description: > + With codes: * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + With codes: + + * **'WEB_FORM_ASSIGNMENT_NOT_FOUND'** when there is no Web Form + Assignment for given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - assignments-submissions + summary: >- + Returns metadata for the fields that belong to a single Web Form + Assignment + operationId: web-form-assignments.fields-metadata.get + security: + - key: [] + - oauth: + - assignments_submissions_read + /fillable-pdf-form-assignments/{fillablePdfFormAssignmentId}/form-answers: + parameters: + - $ref: '#/components/parameters/FillablePdfFormAssignmentId' + get: + responses: + '200': + description: >- + PDF file filled with submitted answers Fillable PDF Form Assignment + was retrieved + content: + application/pdf: + schema: + type: string + format: binary + '401': + description: > + With codes: * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + With codes: + + * **'FILLABLE_PDF_FORM_ASSIGNMENT_NOT_FOUND'** when there is no + Filalble PDF Form Assignment for given id + + * **'FILLABLE_PDF_FORM_ASSIGNMENT_ANSWERS_NOT_FOUND'** when there + are no Filalble PDF Form Assignment Answers for given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - assignments-submissions + summary: Returns answers submitted for a single Fillable PDF Form Assignment + operationId: fillable-pdf-form-assignments.form-answers.get + security: + - key: [] + - oauth: + - assignments_submissions_read + /onboarding-processes/{onboardingProcessId}/assignments: + parameters: + - $ref: '#/components/parameters/OnboardingProcessId' + get: + responses: + '200': + description: >- + Assignments associated with the given Onboarding Process were + returned + content: + application/json: + schema: + $ref: '#/components/schemas/Assignments' + '401': + description: > + With codes: * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + With codes: + + * **'ONBOARDING_PROCESS_NOT_FOUND'** when there is no Onboarding + Process for given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - assignments + summary: Returns Assignments associated with a single Onboarding Process + operationId: onboarding-processes.assignments.get + security: + - key: [] + - oauth: + - assignments_read + /activity-assignments/{activityAssignmentId}/attachments: + parameters: + - $ref: '#/components/parameters/ActivityAssignmentId' + get: + responses: + '200': + description: >- + Attachments submitted for the given Activity Assignment were + returned + content: + application/json: + schema: + $ref: '#/components/schemas/ActivityAssignmentAttachments' + '401': + description: > + With codes: * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + With codes: + + * **'ACTIVITY_ASSIGNMENT_NOT_FOUND'** when there is no Activity + Assignment for given id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - assignments-submissions + summary: Returns list of Attachments submitted for a single Activity Assignment + operationId: activity-assignments.attachments.get + security: + - key: [] + - oauth: + - assignments_submissions_read + /activity-assignments/{activityAssignmentId}/attachments/{attachmentId}: + parameters: + - $ref: '#/components/parameters/ActivityAssignmentId' + - $ref: '#/components/parameters/AttachmentId' + get: + responses: + '200': + description: >- + Single Attachment submitted for the given Activity Assignment was + retrieved + content: + application/octet-stream: + schema: + type: string + format: binary + '401': + description: > + With codes: * **NOT_AUTHORIZED_TO_ACCESS_RESOURCE** when caller is + not authorized to access resource + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + With codes: + + * **'ACTIVITY_ASSIGNMENT_NOT_FOUND'** when there is no Activity + Assignment for given id + + * **'ATTACHMENT_NOT_FOUND'** when there is no Attachment for given + id + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/ServerError' + tags: + - assignments-submissions + summary: Returns single Attachment for specific Activity Assignment + operationId: activity-assignments.attachments.getById + security: + - key: [] + - oauth: + - assignments_submissions_read + /users: + get: + responses: + '200': + description: List of users in your company + content: + application/json: + schema: + $ref: '#/components/schemas/Users' + '400': + description: | + with codes + * **INVALID_PAGE_ID** when pageId is not a correct value + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: | + with code * **PERMISSION_DENIED** Not permitted to manage users + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - users + summary: List users of your company + operationId: users.all + security: + - key: [] + - oauth: + - users_read + parameters: + - in: query + description: full-text search query based on firstName, lastName, email + name: q + schema: + type: string + minLength: 3 + - in: query + description: number of elements to return. max value is 100 + name: limit + schema: + type: integer + minimum: 1 + maximum: 100 + default: 100 + - in: query + description: number of elements to skip while processing result + name: offset + schema: + type: integer + minimum: 0 + default: 0 + - in: query + description: >- + ISO8601-formatted time boundaries for the user update time, Format: + yyyy-MM-ddTHH:mm:ss.SSSZZ + name: updatedAfter + schema: + type: string + format: date-time + deprecated: true + post: + responses: + '201': + description: Created user + content: + application/json: + schema: + $ref: '#/components/schemas/UserEntity' + '400': + description: > + with codes + + * **LANGUAGE_DISABLED** User language is not available as part of + company subscription plan + + * **INVALID_USER_NAME** when firstName or lastName contains invalid + characters (e.g. leading or trailing spaces) + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: | + with code * **PERMISSION_DENIED** Not permitted to access users + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: User already exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + $ref: '#/components/responses/SemanticError' + tags: + - users + summary: Create a new user + operationId: users.create + security: + - key: [] + - oauth: + - users_manage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/NewUser' + description: User object to be created + deprecated: true + /users/me: + get: + responses: + '200': + description: My user details + content: + application/json: + schema: + $ref: '#/components/schemas/UserEntity' + tags: + - users + summary: Get details of my user + operationId: users.me + security: + - key: [] + - oauth: + - users_read + deprecated: true + /users/{id}: + parameters: + - $ref: '#/components/parameters/userId' + get: + responses: + '200': + description: User details + content: + application/json: + schema: + $ref: '#/components/schemas/UserEntity' + '403': + description: | + with code * **PERMISSION_DENIED** Not permitted to manage users + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: User not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - users + summary: Get details of a user with given id + operationId: users.get + security: + - key: [] + - oauth: + - users_read + deprecated: true + patch: + responses: + '200': + description: Updated user + content: + application/json: + schema: + $ref: '#/components/schemas/UserEntity' + '400': + description: > + with codes + + * **LANGUAGE_DISABLED** Updated language is not available as part of + company subscription plan + + * **INVALID_LOCATION** when one of location properties contains + invalid characters + + * **INVALID_USER_NAME** when firstName or lastName contains invalid + characters (e.g. leading or trailing spaces) + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: | + with code * **PERMISSION_DENIED** Not permitted to access users + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: User not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: > + with codes + + * **RESOURCE_ALREADY_EXIST** when user already exists + + * **SSO_IDENTIFIER_ALREADY_EXISTS** when user with given + ssoIdentifier already exists + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - users + summary: Update a user + operationId: users.update + security: + - key: [] + - oauth: + - users_manage + requestBody: + $ref: '#/components/requestBodies/JSONPatch' + deprecated: true + delete: + deprecated: true + responses: + '204': + description: User successfully deactivated + '403': + description: | + with code * **PERMISSION_DENIED** Not permitted to manage users + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: User not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: >- + Deactivates a User with given Id. Please use `DELETE + /users/{id}/activation` instead. + tags: + - users + summary: Deactivate a user + operationId: users.activation.delete + security: + - key: [] + - oauth: + - users_manage + /users/{id}/reset-password: + parameters: + - $ref: '#/components/parameters/userId' + post: + responses: + '204': + description: The password reset email successfully sent + '400': + description: > + with codes + + * **USER_DISABLED** when user is disabled + + * **USER_LOCKED** when user is locked (after login/password + failures) + + * **USER_EMAIL_INVALID** when user email is invalid + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with codes + + * **PASSWORD_AUTHENTICATION_DISABLED** when user cannot use + login/password authentication + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: User not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Send password recovery instruction to the email address associated with + a user with a given id. The password will not be reset until the user + with a given id creates a new password. + tags: + - users + summary: Send a password reset email to a user + operationId: users.password.reset + security: + - key: [] + - oauth: + - users_manage + /users/{id}/activation-email: + parameters: + - $ref: '#/components/parameters/userId' + post: + responses: + '204': + description: Activation email successfully sent + '403': + description: | + with code * **PERMISSION_DENIED** Not permitted to manage users + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: User not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: > + with codes + + * **ACTIVATION_EMAIL_UNAVAILABLE** when user is already activated or + deactivated. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Send an activation email to a user with given id. Users created via an + API are not active. + + This method is an alternative to activating a user directly and allows + sending an activation email + + in which a user will have to open a link and follow instructions on a + screen to activate his/her account. + tags: + - users + summary: Send an activation email to a user + operationId: users.activation.email.send + security: + - key: [] + - oauth: + - users_manage + deprecated: true + /users/{id}/activation: + parameters: + - $ref: '#/components/parameters/userId' + put: + responses: + '204': + description: User successfully activated + '400': + description: | + with codes + * **PROPERTY_INVALID** when user's property is invalid, e.g. email + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: | + with code * **PERMISSION_DENIED** Not permitted to manage users + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: User not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: > + When activating a previously deactivated user, whilst there is an + active user with the same email. + + There could not be more than one activated user with the same email + in the same time. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: > + Activate a user with given id. Users created via an API are not active. + + This method allows activating a user so he/she can sign in straight + away. + tags: + - users + summary: Activate a user + operationId: users.activation.activate + security: + - key: [] + - oauth: + - users_manage + deprecated: true + delete: + responses: + '204': + description: User successfully deactivated + '403': + description: | + with code + * **PERMISSION_DENIED** when user is not permitted to manage users + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: User not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - users + summary: Deactivate a user + operationId: users.activation.deactivate + security: + - key: [] + - oauth: + - users_manage + deprecated: true + /users/{id}/avatar: + parameters: + - $ref: '#/components/parameters/userId' + put: + responses: + '204': + description: Avatar successfully updated + '400': + description: > + with codes + + * **UNMARSHALLING_ERROR** when request cannot be unmarshalled. + This might be usually caused by missing: + - `boundary` parameter in HTTP Request `Content-Type` header + - `boundary` between parts + - `Content-Disposition` header in at least one part + - `name` parameter in at least one `Content-Disposition` header. + Please check reference: https://tools.ietf.org/html/rfc7578#section-4 + + * **MISSING_FILE_PART** when missing part with name `file` (`file` + is case sensitive) + + * **MISSING_FILE_NAME** when `filename` is not available in `file` + part + + * **MISSING_MEDIA_TYPE** when media type in `Content-Type` header is + not available in `file` part + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: | + with code * **PERMISSION_DENIED** Not permitted to manage users + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: User not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + tags: + - users + summary: Update user avatar + operationId: users.avatar.update + security: + - key: [] + - oauth: + - users_manage + requestBody: + content: + multipart/form-data: + schema: + type: object + properties: + file: + description: The file to upload. + type: string + format: binary + required: + - file + deprecated: true + /system-roles: + get: + responses: + '200': + description: List of system roles + content: + application/json: + schema: + $ref: '#/components/schemas/SystemRoles' + '403': + description: | + with code * **PERMISSION_DENIED** Not permitted to manage users + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + summary: List system roles + operationId: system-roles.all + security: + - key: [] + - oauth: + - users_read + tags: + - users + /access-groups: + get: + responses: + '200': + description: List of access groups + content: + application/json: + schema: + $ref: '#/components/schemas/AccessGroups' + '403': + description: > + with code * **PERMISSION_DENIED** Not permitted to manage access + groups + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + summary: List access groups configured in your company + operationId: access-groups.all + externalDocs: + url: >- + https://help.smartrecruiters.com/Company_settings/User_Management/Access_Groups + security: + - key: [] + - oauth: + - users_read + tags: + - users + /access-groups/{accessGroupId}/users/{id}: + parameters: + - $ref: '#/components/parameters/accessGroupId' + - $ref: '#/components/parameters/userId' + delete: + responses: + '204': + description: User successfully removed from access group + '403': + description: > + with code * **PERMISSION_DENIED** Not permitted to manage access + groups + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + with codes + + * **USER_NOT_FOUND** when user with given id doesn't exist + + * **USER_NOT_IN_ACCESS_GROUP** when user is not member of access + group + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + summary: Remove user from access group + operationId: access-groups.users.remove + security: + - key: [] + - oauth: + - users_manage + tags: + - users + /access-groups/{accessGroupId}/users: + parameters: + - $ref: '#/components/parameters/accessGroupId' + post: + responses: + '201': + description: Users successfully added to access group + content: + application/json: + schema: + $ref: '#/components/schemas/AccessGroups' + '400': + description: > + Cannot assigned user to access group with codes + + * **ACCESS_GROUP_NOT_ALLOWED_FOR_USER** when access groups are not + allowed for user + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + with code * **PERMISSION_DENIED** Not permitted to manage access + groups + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: > + User or access group not found with codes + + * **USER_NOT_FOUND** when user with given id doesn't exist + + * **ACCESS_GROUP_NOT_FOUND** when access group with given id + doesn't exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + summary: Assign users to access group + operationId: access-groups.users.assign + security: + - key: [] + - oauth: + - users_manage + tags: + - users + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserIds' + /subscriptions: + post: + summary: Subscribe to a webhook. + description: > + Please be aware that before any event is delivered each subscription + needs to be activated. + + + See [subscription activation](subscriptionsactivate-1). + + + We do limit number of subscriptions each subscriber can register. It + means that: + + + * individual user can register up to 20 subscriptions + + * OAuth application can register up to 20 subscriptions on behalf of a + single user + + + Alerting email address and callback authentication properties are + optional. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SubscriptionRequest' + responses: + '201': + description: Webhook subscription created. + content: + application/json: + schema: + $ref: '#/components/schemas/Subscription' + '400': + description: Invalid request query parameters. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: > + With codes: + + * **NO_PERMISSION_TO_MANAGE_WEBHOOKS** when no permission to manage + webhook subscriptions + + * **SUBSCRIPTIONS_LIMIT_EXCEEDED** when subscription limit for + subscriber is exceeded + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: >- + Incorrect subscription data. Provided callback URL is invalid or + event name is not found. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + callbacks: + onJobCreated: + $ref: '#/components/callbacks/onJobCreated' + onJobUpdated: + $ref: '#/components/callbacks/onJobUpdated' + onJobStatusUpdated: + $ref: '#/components/callbacks/onJobStatusUpdated' + onJobHiringTeamUpdated: + $ref: '#/components/callbacks/onJobHiringTeamUpdated' + onJobAdCreated: + $ref: '#/components/callbacks/onJobAdCreated' + onJobAdUpdated: + $ref: '#/components/callbacks/onJobAdUpdated' + onJobAdPostingsUpdated: + $ref: '#/components/callbacks/onJobAdPostingsUpdated' + onPositionCreated: + $ref: '#/components/callbacks/onPositionCreated' + onPositionUpdated: + $ref: '#/components/callbacks/onPositionUpdated' + onPositionDeleted: + $ref: '#/components/callbacks/onPositionDeleted' + onApplicationCreated: + $ref: '#/components/callbacks/onApplicationCreated' + onApplicationStatusUpdated: + $ref: '#/components/callbacks/onApplicationStatusUpdated' + onApplicationFieldsUpdated: + $ref: '#/components/callbacks/onApplicationFieldsUpdated' + onApplicationOnboardingStatusUpdated: + $ref: '#/components/callbacks/onApplicationOnboardingStatusUpdated' + onApplicationAttachmentCreated: + $ref: '#/components/callbacks/onApplicationAttachmentCreated' + onApplicationSourceUpdated: + $ref: '#/components/callbacks/onApplicationSourceUpdated' + onCandidateCreated: + $ref: '#/components/callbacks/onCandidateCreated' + onCandidateUpdated: + $ref: '#/components/callbacks/onCandidateUpdated' + onCandidateDeleted: + $ref: '#/components/callbacks/onCandidateDeleted' + onOfferCreated: + $ref: '#/components/callbacks/onOfferCreated' + onOfferUpdated: + $ref: '#/components/callbacks/onOfferUpdated' + onOfferApprovalCreated: + $ref: '#/components/callbacks/onOfferApprovalCreated' + onOfferApprovalApproved: + $ref: '#/components/callbacks/onOfferApprovalApproved' + onOfferApprovalRejected: + $ref: '#/components/callbacks/onOfferApprovalRejected' + onOfferApprovalAbandoned: + $ref: '#/components/callbacks/onOfferApprovalAbandoned' + onOfferApprovalStepApproved: + $ref: '#/components/callbacks/onOfferApprovalStepApproved' + onOfferApprovalStepRejected: + $ref: '#/components/callbacks/onOfferApprovalStepRejected' + onOfferApproverSkipped: + $ref: '#/components/callbacks/onOfferApproverSkipped' + onOfferApproverDelegated: + $ref: '#/components/callbacks/onOfferApproverDelegated' + onOfferApprovalCommentCreated: + $ref: '#/components/callbacks/onOfferApprovalCommentCreated' + onJobApprovalCreated: + $ref: '#/components/callbacks/onJobApprovalCreated' + onJobApprovalApproved: + $ref: '#/components/callbacks/onJobApprovalApproved' + onJobApprovalRejected: + $ref: '#/components/callbacks/onJobApprovalRejected' + onJobApprovalAbandoned: + $ref: '#/components/callbacks/onJobApprovalAbandoned' + onJobApprovalStepApproved: + $ref: '#/components/callbacks/onJobApprovalStepApproved' + onJobApprovalStepRejected: + $ref: '#/components/callbacks/onJobApprovalStepRejected' + onJobApproverSkipped: + $ref: '#/components/callbacks/onJobApproverSkipped' + onJobApproverDelegated: + $ref: '#/components/callbacks/onJobApproverDelegated' + onJobApprovalCommentCreated: + $ref: '#/components/callbacks/onJobApprovalCommentCreated' + onReviewCreated: + $ref: '#/components/callbacks/onReviewCreated' + onReviewUpdated: + $ref: '#/components/callbacks/onReviewUpdated' + onReviewDeleted: + $ref: '#/components/callbacks/onReviewDeleted' + onApplicationScreeningAnswersCreated: + $ref: '#/components/callbacks/onApplicationScreeningAnswersCreated' + onApplicationScreeningAnswersUpdated: + $ref: '#/components/callbacks/onApplicationScreeningAnswersUpdated' + onOnboardingProcessStarted: + $ref: '#/components/callbacks/onOnboardingProcessStarted' + onOnboardingAssignmentsHighPriorityCompleted: + $ref: '#/components/callbacks/onOnboardingAssignmentsHighPriorityCompleted' + onOnboardingAssignmentsCompleted: + $ref: '#/components/callbacks/onOnboardingAssignmentsCompleted' + operationId: subscriptions.create + tags: + - subscriptions + security: + - key: [] + - oauth: + - webhooks_write + - webhooks_manage + get: + parameters: + - $ref: '#/components/parameters/pageId' + - $ref: '#/components/parameters/limit' + summary: Retrieve webhook subscriptions. + responses: + '200': + description: List of subscription details. + content: + application/json: + schema: + $ref: '#/components/schemas/Subscriptions' + headers: + Link: + description: >- + Link to next resources is provided in the Link header according + to [RFC8288](https://tools.ietf.org/html/rfc8288). The relation + type is "next". + schema: + type: string + '401': + description: Unauthorized + '403': + description: No permission to see subscriptions + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + operationId: subscriptions.getAll + tags: + - subscriptions + security: + - key: [] + - oauth: + - webhooks_read + - webhooks_manage + /subscriptions/{id}: + parameters: + - $ref: '#/components/parameters/subscriptionId' + get: + summary: Retrieve single webhook subscription. + responses: + '200': + description: Subscription details. + content: + application/json: + schema: + $ref: '#/components/schemas/Subscription' + '403': + description: No permission to see this subscription. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + $ref: '#/components/responses/SubscriptionNotFound' + operationId: subscriptions.get + tags: + - subscriptions + security: + - key: [] + - oauth: + - webhooks_read + - webhooks_manage + delete: + summary: Delete webhook subscription. + responses: + '204': + description: Webhook subscription deleted. + '403': + description: No permission to delete webhook subscription. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + $ref: '#/components/responses/SubscriptionNotFound' + operationId: subscriptions.delete + tags: + - subscriptions + security: + - key: [] + - oauth: + - webhooks_delete + - webhooks_manage + /subscriptions/{id}/activation: + parameters: + - $ref: '#/components/parameters/subscriptionId' + put: + summary: Activate webhook subscription. + description: > + To ensure that target server is ready to consume notifications, we + require you to implement the initial + + handshake. + + + Having subscription with `callbackUrl`: `https://example.org/hook`, + during activation we will make `POST` + + request with `X-Hook-Secret` header: + + + ``` + + POST https://example.com/hook + + X-Hook-Secret: 4jn8fs9011jj8 + + ``` + + + We expect your server to respond within the time of 20 seconds with HTTP + `200` response containing + + `X-Hook-Secret` header with same value. + + + ``` + + Response 200 + + X-Hook-Secret: 4jn8fs9011jj8 + + ``` + responses: + '204': + description: Subscription activated. + '404': + $ref: '#/components/responses/SubscriptionNotFound' + '409': + description: Subscription already activated. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '424': + description: Webhook activation handshake failed. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + operationId: subscriptions.activate + tags: + - subscriptions + security: + - key: [] + - oauth: + - webhooks_write + - webhooks_manage + /subscriptions/{id}/secret-key: + parameters: + - $ref: '#/components/parameters/subscriptionId' + post: + summary: Generate secret key for a webhook subscription. + description: > + We allow you to generate a secret key for the subscription. You can use + it to verify the author of callback messages. When you + + have a secret key already defined - a creation of new one will make old + one deprecated - it will be still active for 24 hours + + though. You can have up to 16 non-expired secret keys. + + + A signature will be included in header `smartrecruiters-signature` of + callback request. Additionally we will send + + `smartrecruiters-timestamp` header with timestamp (seconds) of request. + + + `smartrecruiters-signature` header value has the following format: + + + ``` + + $SIGNATURE_SCHEMA=$SIGNATURE_1;$SIGNATURE_SCHEMA=$SIGNATURE_2... + + ``` + + + As you may notice there may be multiple signatures included in the + header. It can be caused by one or both: + + * having multiple active keys + + * smartrecruiters providing multiple signatures per key with different + signature schemes. We may use it in the + + future to deliver new algorithm of signature creation without breaking + backward compability. + + Every segment of header value is delimited by `;` character + + + Currently, we support and sent following signature + (`$SIGNATURE_SCHEMA`): + + + #### 1) `v1` + + + Signature calculated using HMAC with SHA256 algorithm. Hash should be + calculated from following elements + + concatenated by the `.` character: + * `smartrecruiters-timestamp` header value + * request body + * `event-id` header value + * `event-name` header value + * `event-version` header value + * `link` header value + + Order of this elements is important. In absence of header please use an + empty string as its value. + + + For example assume we have: + + * One active secret key: HeBVky2bccvvkcXPimH8c + + * Callback request: + * headers: + * content-type: application/json + * smartrecruiters-signature: "v1=2e9291f10d44ca10204a4cd81b05d73b6a316b2b605d4e2e0e0b37b40198ce1f" + * smartrecruiters-timestamp = "1574080897" + * event-id = "123" + * link = "; rel=self" + * event-name = "application.created" + * event-version = "v201910" + * body: {"job_id":"jid","candidate_id": "cid"} + + hash should be calculated from value: + + ``` + + 1574080897.{"job_id":"jid","candidate_id":"cid"}.123.application.created.v201910.; + rel=self + + ``` + + + and after using HMAC and SHA256 it should give you hash : + 2e9291f10d44ca10204a4cd81b05d73b6a316b2b605d4e2e0e0b37b40198ce1f, + + + so that `smartrecruiters-signature` header in the callback request will + have value: + + `v1=2e9291f10d44ca10204a4cd81b05d73b6a316b2b605d4e2e0e0b37b40198ce1f` + responses: + '201': + description: Secret key sucessfully generated. + content: + application/json: + schema: + $ref: '#/components/schemas/SecretKeyPayload' + '403': + description: > + With codes: + + * **NO_PERMISSION_TO_MANAGE_WEBHOOKS** when no permission to manage + webhook subscriptions + + * **SECRET_KEYS_LIMIT_EXCEEDED** when secret keys limit for + subscription is exceeded + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + $ref: '#/components/responses/SubscriptionNotFound' + operationId: subscriptions.generateSecretKey + tags: + - subscriptions + security: + - key: [] + - oauth: + - webhooks_write + - webhooks_manage + get: + summary: Retrieve subscription secret key + description: Retrieves the last secret key for webhook subscription. + responses: + '200': + description: Subscription secret key. + content: + application/json: + schema: + $ref: '#/components/schemas/SecretKeyPayload' + '403': + description: No permission to retrieve secret key for webhook subscription. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + $ref: '#/components/responses/SubscriptionNotFound' + operationId: subscriptions.getSecretKey + tags: + - subscriptions + security: + - key: [] + - oauth: + - webhooks_read + - webhooks_manage + /subscriptions/{id}/callbacks-log: + get: + parameters: + - $ref: '#/components/parameters/subscriptionId' + - $ref: '#/components/parameters/pageId' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/callbackStatus' + - $ref: '#/components/parameters/after' + - $ref: '#/components/parameters/before' + summary: Retrieve callback request details starting from newest. + responses: + '200': + description: List of callback request details. + content: + application/json: + schema: + $ref: '#/components/schemas/CallbackRequests' + headers: + Link: + description: >- + Link to next resources is provided in the Link header according + to [RFC8288](https://tools.ietf.org/html/rfc8288). The relation + type is "next". + schema: + type: string + operationId: subscriptions.searchCallbackLog + tags: + - subscriptions + security: + - key: [] + - oauth: + - webhooks_read + - webhooks_manage +components: + schemas: + ApplyApiResponse: + type: object + properties: + id: + type: string + createdOn: + type: string + candidatePortalUrl: + type: string + smartrJoinUrl: + type: string + ApplyApiError: + required: + - code + - id + type: object + properties: + id: + type: string + code: + type: string + enum: + - INVALID_REQUEST + - INVALID_INPUT + - DATA_VALIDATION_ERROR + - RESOURCE_NOT_FOUND_ERROR + - COMPANY_NOT_FOUND_ERROR + - COMPANY_RETRIEVAL_ERROR + - APPLY_API_ERROR + - FILE_UPLOAD_ERROR + - FILE_API_ERROR + - INVALID_API_KEY_ERROR + - UNAUTHORIZED + - REST_CALL_TIMEOUT + - TRAFFIC_LOCKED + message: + type: string + AnswerRecord: + type: object + properties: + fields: + type: array + additionalProperties: + type: array + items: + type: string + description: >- + Multiple fields may be used for example for questions (Preferred + Work Shifts, Languages, EEO, Currency) + items: + $ref: '#/components/schemas/AnswerField' + required: + - fields + ApplyApiRequest: + required: + - email + - firstName + - lastName + type: object + properties: + firstName: + maxLength: 128 + minLength: 0 + type: string + lastName: + maxLength: 128 + minLength: 0 + type: string + email: + maxLength: 128 + minLength: 0 + type: string + createJoinLink: + type: boolean + conditionalsIncluded: + type: boolean + description: > + Specifies whether conditional questions should be returned in the + response. 'false' if not specified + + - Only available for BETA customers + phoneNumber: + maxLength: 128 + minLength: 0 + type: string + location: + $ref: '#/components/schemas/Location' + web: + $ref: '#/components/schemas/Web' + tags: + type: array + items: + type: string + education: + type: array + items: + $ref: '#/components/schemas/Education' + experience: + type: array + items: + $ref: '#/components/schemas/Employment' + sourceDetails: + $ref: '#/components/schemas/SourceDetails' + resume: + $ref: '#/components/schemas/Attachment' + avatar: + $ref: '#/components/schemas/Attachment' + attachments: + type: array + items: + $ref: '#/components/schemas/Attachment' + answers: + type: array + items: + $ref: '#/components/schemas/ScreeningQuestionAnswer' + messageToHiringManager: + maxLength: 4000 + minLength: 0 + type: string + consent: + type: boolean + consentDecisions: + type: object + additionalProperties: + type: boolean + internal: + type: boolean + Attachment: + required: + - id + - actions + type: object + properties: + fileName: + maxLength: 100 + minLength: 0 + type: string + mimeType: + type: string + fileContent: + maxLength: 13981014 + minLength: 1 + type: string + type: + type: string + enum: + - VIDEO_URL + - PDF_URL + - OTHER_URL + url: + type: string + format: uri + id: + type: string + name: + type: string + contentType: + type: string + actions: + type: object + required: + - download + properties: + download: + $ref: '#/components/schemas/Action' + Education: + required: + - degree + - institution + type: object + properties: + institution: + maxLength: 200 + minLength: 1 + type: string + degree: + maxLength: 200 + minLength: 1 + type: string + major: + maxLength: 200 + minLength: 1 + type: string + current: + type: boolean + startDate: + pattern: \d{4}-\d{2}-\d{2} + type: string + $ref: '#/components/schemas/When' + endDate: + pattern: \d{4}-\d{2}-\d{2} + type: string + $ref: '#/components/schemas/When' + location: + maxLength: 200 + minLength: 0 + type: string + description: + maxLength: 4000 + minLength: 0 + type: string + Employment: + required: + - startDate + - title + type: object + properties: + title: + maxLength: 200 + minLength: 0 + type: string + company: + maxLength: 200 + minLength: 0 + type: string + current: + type: boolean + startDate: + pattern: \d{4}-\d{2}-\d{2} + type: string + endDate: + pattern: \d{4}-\d{2}-\d{2} + type: string + location: + maxLength: 200 + minLength: 0 + type: string + description: + maxLength: 4000 + minLength: 0 + type: string + Location: + type: object + properties: + country: + maxLength: 128 + minLength: 1 + type: string + countryCode: + maxLength: 2 + minLength: 2 + type: string + region: + maxLength: 128 + minLength: 0 + type: string + regionCode: + maxLength: 5 + minLength: 2 + type: string + city: + maxLength: 128 + minLength: 1 + type: string + lat: + maximum: 90 + minimum: -90 + type: number + format: float + lng: + maximum: 180 + minimum: -180 + type: number + format: float + address: + type: string + format: address + postalCode: + type: string + longitude: + type: string + latitude: + type: string + manual: + type: boolean + remote: + type: boolean + required: + - city + - countryCode + description: >- + regionCode is not recommended to be used for countries other than the + United States. + ScreeningQuestionAnswer: + required: + - id + - records + type: object + properties: + id: + type: string + records: + type: array + items: + $ref: '#/components/schemas/AnswerRecord' + SourceDetails: + required: + - sourceId + - sourceTypeId + type: object + properties: + sourceTypeId: + type: string + sourceSubTypeId: + type: string + sourceId: + type: string + Web: + type: object + properties: + skype: + maxLength: 100 + minLength: 0 + type: string + linkedIn: + maxLength: 1000 + minLength: 0 + type: string + facebook: + maxLength: 1000 + minLength: 0 + type: string + twitter: + maxLength: 100 + minLength: 0 + type: string + website: + maxLength: 1000 + minLength: 0 + type: string + ApplicationStatusInfo: + type: object + properties: + status: + type: string + enum: + - NEW + - IN_REVIEW + - INTERVIEW + - OFFER + - HIRE + - REJECTED + - WITHDRAWN + - LEAD + - TRANSFERRED + - OTHER + ApplyConfiguration: + required: + - questions + - settings + type: object + properties: + questions: + type: array + items: + $ref: '#/components/schemas/ScreeningQuestion' + settings: + $ref: '#/components/schemas/ApplySettings' + privacyPolicies: + type: array + items: + $ref: '#/components/schemas/PrivacyPolicy' + ApplySettings: + type: object + properties: + avatarUploadAvailable: + type: boolean + FieldValue: + required: + - id + - label + type: object + properties: + id: + type: string + label: + type: string + PrivacyPolicy: + type: object + properties: + url: + type: string + orgName: + type: string + ScreeningQuestion: + required: + - fields + - id + - label + - repeatable + type: object + properties: + id: + type: string + label: + type: string + repeatable: + type: boolean + fields: + type: array + items: + $ref: '#/components/schemas/ScreeningQuestionField' + ScreeningQuestionField: + required: + - id + - label + - required + - type + - values + type: object + properties: + id: + type: string + label: + type: string + type: + type: string + enum: + - INPUT_TEXT + - SINGLE_SELECT + - MULTI_SELECT + - RADIO + - CHECKBOX + - TEXTAREA + - INFORMATION + required: + type: boolean + complianceType: + type: string + enum: + - DIVERSITY + values: + type: array + items: + $ref: '#/components/schemas/FieldValue' + ApprovalRequests: + description: Approval requests + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/ApprovalRequest' + ApprovalRequest: + description: Approval request + type: object + properties: + id: + $ref: '#/components/schemas/ApprovalRequestId' + subject: + $ref: '#/components/schemas/Subject' + type: + $ref: '#/components/schemas/Type' + decisionMode: + $ref: '#/components/schemas/DecisionMode' + status: + description: Status of approval request + type: string + example: APPROVED + enum: + - PENDING + - APPROVED + - REJECTED + - ABANDONED + steps: + type: array + items: + $ref: '#/components/schemas/Step' + approvalRequestId: + type: string + ApprovalRequestId: + description: Approval request id + type: string + Subject: + description: Subject of approval request + type: object + properties: + id: + type: string + type: + type: string + enum: + - job + - offer + Type: + type: string + enum: + - sequential + - parallel + DecisionMode: + type: string + enum: + - any + - all + Step: + description: Required steps to complete approval + type: object + properties: + status: + description: Status of approval step + type: string + example: APPROVED + enum: + - PENDING + - APPROVED + - REJECTED + - SKIPPED + approvers: + description: The order matters when type is `sequential` + type: array + items: + $ref: '#/components/schemas/Approver' + StepInput: + description: Required steps to complete approval + type: object + properties: + approvers: + description: The order matters when type is `sequential` + type: array + minItems: 1 + items: + $ref: '#/components/schemas/ApproverInput' + Approver: + description: Approver + type: object + properties: + id: + description: Approver id + type: string + decision: + description: Decision status for approver + type: string + example: APPROVED + enum: + - PENDING + - APPROVED + - REJECTED + - SKIPPED + decidedOn: + description: Decision date + type: string + format: date-time + ApproverInput: + description: Approver + type: object + properties: + id: + description: Approver id + type: string + Comments: + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/Comment' + Comment: + type: object + properties: + content: + type: string + authorId: + type: string + createdOn: + type: string + format: date-time + ErrorResponse: + type: object + properties: + errors: + type: array + items: + $ref: '#/components/schemas/Error' + message: + type: string + required: + - errors + Error: + type: object + required: + - code + properties: + code: + type: string + message: + type: string + PartnerConfigurationRequest: + required: + - assessmentPackageListUrl + - singleAssessmentPackageUrl + - consentUrl + - consentDisplayMode + - oauthTokenUrl + - supportedAssessmentTypes + type: object + properties: + consentUrl: + type: string + format: uri + description: > + Refers to Partner API: `GET /integration`. SmartRecruiters will add + URL query parameters: + + companyId and redirect (only when `consentDisplayMode=REDIRECT`) + consentDisplayMode: + type: string + enum: + - REDIRECT + - POPUP + description: > + REDIRECT: End users will leave SmartRecruiters and be redirected to + the url configured in consentUrl. + + POPUP: End users will remain in SmartRecruiters and see a pop up + widget. + assessmentPackageListUrl: + type: string + format: uri + description: 'Refers to Partner API: `GET /packages`' + singleAssessmentPackageUrl: + type: string + format: uri + description: 'Refers to Partner API: `GET /packages/{assessmentPackageId}`' + packageOrderUrl: + type: string + format: uri + description: 'Refers to Partner API: `POST /packages/orders`' + inlineAssessmentPackageOrderUrl: + type: string + format: uri + description: 'Refers to Partner API: `POST /packages/inline/orders`' + oauthTokenUrl: + type: string + format: uri + description: >- + Endpoint to exchange the OAuth 2.0 credentials we received from your + service for an access token to your endpoints. + integrationDisableUrl: + type: string + format: uri + description: >- + Refers to Partner API: `DELETE + com/integrations/companies/{companyId}` + fields: + type: array + maxItems: 5 + items: + $ref: '#/components/schemas/Field' + supportedAssessmentTypes: + type: array + minItems: 1 + maxItems: 6 + items: + $ref: '#/components/schemas/AssessmentType' + PartnerConfiguration: + required: + - assessmentPackageListUrl + - singleAssessmentPackageUrl + - consentUrl + - consentDisplayMode + - oauthTokenUrl + - supportedAssessmentTypes + type: object + properties: + consentUrl: + type: string + description: >- + Refers to Partner API: GET /integration. SmartRecruiters will add + URL query parameters: companyId and redirect (only when + consentDisplayMode=REDIRECT) + format: uri + consentDisplayMode: + type: string + description: >- + REDIRECT: End users will leave SmartRecruiters and be redirected to + the url configured in consentUrl. POPUP: End users will remain in + SmartRecruiters and see a pop up widget. + enum: + - REDIRECT + - POPUP + assessmentPackageListUrl: + type: string + description: 'Refers to Partner API: GET /packages' + format: uri + singleAssessmentPackageUrl: + type: string + description: 'Refers to Partner API: GET /packages/{assessmentPackageId}' + format: uri + packageOrderUrl: + type: string + description: 'Refers to Partner API: POST /packages/orders' + format: uri + inlineAssessmentPackageOrderUrl: + type: string + description: 'Refers to Partner API: POST /packages/inline/orders' + format: uri + oauthTokenUrl: + type: string + description: >- + Endpoint to exchange the OAuth 2.0 credentials we received from your + service for an access token to your endpoints. + format: uri + integrationDisableUrl: + type: string + description: 'Refers to Partner API: DELETE /integrations/companies/{companyId}' + format: uri + fields: + type: array + maxItems: 5 + items: + $ref: '#/components/schemas/FieldView' + supportedAssessmentTypes: + type: array + minItems: 1 + maxItems: 6 + items: + $ref: '#/components/schemas/AssessmentType' + FieldView: + type: object + properties: + id: + type: string + name: + type: string + description: + type: string + Field: + required: + - description + - id + - name + type: object + properties: + id: + type: string + description: Id field will be used in the URL as a HTTP request parameter name + name: + type: string + description: User friendly name of the parameter + description: + type: string + description: Description saying what is the purpose of this parameter + ClientCredentials: + required: + - clientId + - clientSecret + type: object + properties: + clientId: + type: string + clientSecret: + type: string + AssessmentResult: + required: + - assessmentId + type: object + properties: + assessmentId: + type: string + assessmentDate: + type: string + format: date-time + submissionDate: + type: string + format: date-time + assessmentName: + type: string + score: + $ref: '#/components/schemas/Score' + type: string + scoreLabel: + type: string + summary: + type: string + attachments: + type: array + items: + $ref: '#/components/schemas/Attachment' + status: + type: string + enum: + - IN_PROGRESS + - PENDING + - COMPLETED + - REJECTED + - EXPIRED + name: + type: string + PackageResult: + type: object + properties: + assessmentPackageDate: + type: string + format: date-time + description: The date when assessments package was sent to the candidate + submissionDate: + type: string + format: date-time + description: The date when assessments package was submitted by the candidate + name: + type: string + description: + type: string + deprecated: true + description: >- + Not used. To display a short description in the UI, use "summary" + instead + status: + type: string + enum: + - IN_PROGRESS + - PENDING + - COMPLETED + - REJECTED + - EXPIRED + score: + $ref: '#/components/schemas/Score' + scoreLabel: + type: string + description: Will be displayed next to the score in the candidate profile + summary: + type: string + description: >- + Will be displayed next to the score and label in the candidate + profile + attachments: + type: array + items: + $ref: '#/components/schemas/Attachment' + assessmentResults: + type: array + items: + $ref: '#/components/schemas/AssessmentResult' + Score: + required: + - max + - min + - raw + type: object + properties: + raw: + type: integer + format: int64 + description: Score value + min: + type: integer + format: int64 + description: Range lower bound - included + max: + type: integer + format: int64 + description: Range upper bound - included + description: >- + Structural score 'raw' value in a range from min to max - including min + and max. For example, score {raw:28, min:20, max:80} gives a normalized + score of 13%, which users can see in SR UI. The 'raw' value will be + converted to SR UI label '28/80' when min value is not provided. + example: >- + {raw:28, min:20, max:80} gives a normalized 13% or label '28/80' (min is + not presented in label) + AttachmentResult: + required: + - url + type: object + properties: + url: + type: string + AssessmentType: + type: string + enum: + - VIDEO_INTERVIEW + - BEHAVIORAL_ASSESSMENT + - BACKGROUND_CHECK + - REFERENCE_CHECK + - SKILL_TEST + - INLINE_ASSESSMENT + Unit: + type: object + Requester: + required: + - email + type: object + properties: + email: + type: string + Assessment: + required: + - description + - id + - type + type: object + properties: + id: + type: string + type: + $ref: '#/components/schemas/AssessmentType' + name: + type: string + description: + type: string + AssessmentPackage: + required: + - assessments + - description + - id + - name + - type + type: object + properties: + id: + type: string + type: + $ref: '#/components/schemas/AssessmentType' + name: + type: string + description: + type: string + assessments: + type: array + items: + $ref: '#/components/schemas/Assessment' + AssessmentPackageOrderRequest: + required: + - assessmentPackageId + - candidate + - companyId + - jobId + - resultCallbackURL + - job + type: object + properties: + resultCallbackURL: + type: string + format: uri + candidate: + $ref: '#/components/schemas/Candidate' + job: + $ref: '#/components/schemas/Job' + requester: + $ref: '#/components/schemas/OrderRequester' + assessmentPackageId: + type: string + jobId: + type: string + deprecated: true + companyId: + type: string + fields: + type: object + additionalProperties: + type: string + example: + partner-field-id: partner-field-value + Candidate: + required: + - id + - internal + - firstName + - lastName + - createdOn + - actions + type: object + properties: + id: + type: string + email: + type: string + firstName: + type: string + lastName: + type: string + applicationLanguage: + type: string + internal: + type: boolean + description: true, if the candidate has at least one internal application + createdOn: + type: string + format: date-time + updatedOn: + type: string + format: date-time + location: + $ref: '#/components/schemas/CandidateLocation' + averageRating: + type: number + deprecated: true + tags: + type: array + items: + type: string + consent: + type: object + properties: + status: + $ref: '#/components/schemas/ConsentStatus' + primaryAssignment: + type: object + required: + - job + - status + properties: + job: + type: object + required: + - id + - title + - actions + properties: + id: + type: string + title: + type: string + actions: + type: object + required: + - details + properties: + details: + $ref: '#/components/schemas/Action' + status: + $ref: '#/components/schemas/CandidateStatusEnum' + subStatus: + type: string + secondaryAssignments: + type: array + items: + type: object + required: + - job + properties: + job: + type: object + required: + - id + - actions + properties: + id: + type: string + actions: + type: object + required: + - details + properties: + details: + $ref: '#/components/schemas/Action' + actions: + type: object + required: + - details + - properties + properties: + details: + $ref: '#/components/schemas/Action' + properties: + $ref: '#/components/schemas/Action' + allOf: + - type: object + required: + - id + properties: + id: + $ref: '#/components/schemas/Uuid' + status: + $ref: '#/components/schemas/CandidateAttendeeStatusValue' + Job: + required: + - id + type: object + properties: + id: + type: string + format: uuid + job: + type: object + properties: + id: + type: string + title: + type: string + actions: + type: object + required: + - details + properties: + details: + $ref: '#/components/schemas/Action' + positionDetails: + $ref: '#/components/schemas/Action' + title: + type: string + refNumber: + type: string + createdOn: + type: string + format: date-time + updatedOn: + type: string + format: date-time + description: Job modification date + lastActivityOn: + type: string + format: date-time + description: Indicates last activity associated with a job + department: + $ref: '#/components/schemas/Department' + location: + $ref: '#/components/schemas/Location' + status: + $ref: '#/components/schemas/JobStatus' + postingStatus: + $ref: '#/components/schemas/PostingStatus' + OrderRequester: + required: + - email + - userId + type: object + properties: + userId: + type: string + email: + type: string + InlineAssessmentPackageOrderRequest: + required: + - assessmentPackageId + - candidate + - companyId + - completedAssessmentCallbackUrl + - jobId + - resultCallbackURL + - job + type: object + properties: + resultCallbackURL: + type: string + format: uri + candidate: + $ref: '#/components/schemas/InlineCandidate' + job: + $ref: '#/components/schemas/InlineJob' + assessmentPackageId: + type: string + jobId: + type: string + deprecated: true + companyId: + type: string + completedAssessmentCallbackUrl: + type: string + fields: + type: object + additionalProperties: + type: string + example: + partner-field-id: partner-field-value + InlineCandidate: + required: + - applicationLanguage + - email + - firstName + - lastName + type: object + properties: + email: + type: string + firstName: + type: string + lastName: + type: string + applicationLanguage: + type: string + InlineJob: + required: + - id + type: object + properties: + id: + type: string + format: uuid + InlineAssessmentPackageResponse: + required: + - assessmentPackageURL + type: object + properties: + url: + type: string + description: URL of inline assessment which will be open for candidate + TokenInput: + type: object + required: + - grant_type + - client_id + - client_secret + properties: + grant_type: + type: string + enum: + - client_credentials + client_id: + type: string + client_secret: + type: string + AccessToken: + type: object + required: + - access_token + - expires_in + properties: + access_token: + type: string + expires_in: + type: integer + description: >- + Indicates for how many seconds the token will be valid from the + moment it was generated. + TokenErrorResponse: + type: object + required: + - error + properties: + error: + type: string + error_description: + type: string + Uuid: + type: string + format: uuid + AssessmentOrder: + type: object + properties: + applicationId: + $ref: '#/components/schemas/Uuid' + orderId: + $ref: '#/components/schemas/Uuid' + assessmentPackageDate: + type: string + format: date-time + submissionDate: + type: string + format: date-time + assessmentPackageName: + type: string + description: + type: string + status: + type: string + score: + type: string + scoreLabel: + type: string + summary: + type: string + attachments: + type: array + items: + $ref: '#/components/schemas/Attachment' + assessments: + type: array + items: + $ref: '#/components/schemas/AssessmentResult' + AssessmentOrders: + type: array + items: + $ref: '#/components/schemas/AssessmentOrder' + Events: + type: object + properties: + nextPageId: + type: string + description: Unique identifier for the next page of events + limit: + type: integer + description: Number of audit events that were requested + content: + type: array + items: + $ref: '#/components/schemas/Event' + EventContext: + type: object + properties: + authenticationType: + type: string + enum: + - PASSWORD + - API_KEY + - WEB_SSO + - AUTH_TOKEN + - SUPPORT_ACCESS + currentRole: + $ref: '#/components/schemas/UserRole' + previousRole: + $ref: '#/components/schemas/UserRole' + officeName: + type: string + Event: + type: object + properties: + id: + type: string + description: Unique identifier of the event + eventName: + type: string + description: Name of the event + eventDate: + type: string + format: date-time + description: >- + Timestamp when _the thing_ represented by the event actually + happened + authorType: + type: string + enum: + - USER + - SUPPORT_USER + - SYSTEM + description: Type of the author who generated the event + authorId: + type: string + description: Unique identifier of the author + entityType: + type: string + enum: + - USER + - CANDIDATE + - APPLICATION + - OFFER + - JOB + - COMPANY + - JOB_PROPERTY + - JOB_AD + - CREDENTIAL + - REPORT_FILE + - ONBOARDING_PROCESS + description: Type of the entity that the event is related to + entityId: + type: string + description: Unique identifier of the entity that the event is related to + context: + type: object + $ref: '#/components/schemas/EventContext' + description: Additional context of event + name: + $ref: '#/components/schemas/EventName' + version: + type: string + readOnly: true + UserRole: + type: string + enum: + - ADMINISTRATOR + - EMPLOYEE + - EXTENDED + - RESTRICTED + - STANDARD + CandidateTags: + type: object + required: + - tags + properties: + tags: + type: array + maxItems: 100 + items: + type: string + maxLength: 50 + OnboardingStatus: + type: object + required: + - onboardingStatus + properties: + onboardingStatus: + type: string + enum: + - READY_TO_ONBOARD + - ONBOARDING_SUCCESSFUL + - ONBOARDING_FAILED + Candidates: + type: object + required: + - limit + - offset + - totalFound + - content + properties: + limit: + type: integer + offset: + type: integer + nextPageId: + type: string + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/Candidate' + PersonalDetails: + type: object + properties: + firstName: + type: string + minLength: 1 + lastName: + type: string + minLength: 1 + email: + type: string + format: email + phoneNumber: + type: string + location: + $ref: '#/components/schemas/CandidateLocation' + web: + $ref: '#/components/schemas/WebProfile' + CandidateInput: + type: object + required: + - firstName + - lastName + - email + properties: + firstName: + type: string + minLength: 1 + lastName: + type: string + minLength: 1 + email: + type: string + format: email + phoneNumber: + type: string + location: + $ref: '#/components/schemas/CandidateLocation' + web: + $ref: '#/components/schemas/WebProfile' + tags: + type: array + items: + type: string + education: + type: array + default: [] + items: + $ref: '#/components/schemas/Education' + experience: + type: array + default: [] + items: + $ref: '#/components/schemas/Experience' + sourceDetails: + $ref: '#/components/schemas/CandidateSource' + internal: + type: boolean + CandidateDetails: + type: object + properties: + id: + type: string + internal: + type: boolean + firstName: + type: string + lastName: + type: string + email: + type: string + phoneNumber: + type: string + location: + $ref: '#/components/schemas/CandidateLocation' + web: + $ref: '#/components/schemas/WebProfile' + createdOn: + type: string + format: date-time + updatedOn: + type: string + format: date-time + tags: + type: array + items: + type: string + averageRating: + type: number + deprecated: true + education: + type: array + items: + $ref: '#/components/schemas/Education' + experience: + type: array + items: + $ref: '#/components/schemas/Experience' + primaryAssignment: + allOf: + - $ref: '#/components/schemas/Job' + - $ref: '#/components/schemas/Assignment' + secondaryAssignments: + type: array + items: + allOf: + - $ref: '#/components/schemas/Job' + - $ref: '#/components/schemas/Assignment' + actions: + type: object + required: + - properties + properties: + properties: + $ref: '#/components/schemas/Action' + attachments: + $ref: '#/components/schemas/Action' + consent: + $ref: '#/components/schemas/Action' + consents: + $ref: '#/components/schemas/Action' + CandidateLocation: + type: object + properties: + country: + type: string + minLength: 1 + countryCode: + type: string + minLength: 2 + maxLength: 2 + regionCode: + type: string + region: + type: string + city: + type: string + minLength: 1 + lat: + type: number + format: float + lng: + type: number + format: float + Attachments: + type: object + required: + - totalFound + - content + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/Attachment' + CandidateAttachmentsForJob: + type: object + required: + - totalFound + - content + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/CandidateAttachmentForJob' + CandidateAttachmentForJob: + type: object + required: + - id + - name + - type + - contentType + properties: + id: + type: string + name: + type: string + type: + type: string + contentType: + type: string + actions: + type: object + required: + - download + - remove + properties: + download: + $ref: '#/components/schemas/Action' + remove: + $ref: '#/components/schemas/Action' + CandidateStatusEnum: + type: string + enum: + - LEAD + - NEW + - IN_REVIEW + - INTERVIEW + - OFFERED + - HIRED + - REJECTED + - WITHDRAWN + - TRANSFERRED + CandidateStatus: + type: object + required: + - status + properties: + status: + $ref: '#/components/schemas/CandidateStatusEnum' + subStatus: + type: string + startsOn: + type: string + format: date-time + reason: + type: string + description: >- + id of rejection (GET /configuration/rejection-reasons) or withdrawal + (GET /configuration/withdrawal-reasons) reason. + CandidateStatusHistoryList: + type: object + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/CandidateStatusHistoryListElem' + CandidateProperties: + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/CandidateProperty' + CandidateProperty: + type: object + required: + - id + - label + - type + - value + - actions + properties: + id: + type: string + label: + type: string + type: + $ref: '#/components/schemas/CandidatePropertyType' + value: + oneOf: + - type: string + - type: boolean + - type: number + - type: object + required: + - code + - value + properties: + code: + type: string + value: + type: number + valueLabel: + type: string + description: Label of selected option for SINGLE_SELECT field type + actions: + type: object + required: + - configuration + properties: + configuration: + $ref: '#/components/schemas/Action' + CandidatePropertyInputValue: + type: object + properties: + value: + description: string, number, boolean or object + Application: + allOf: + - properties: + applicationId: + type: string + - $ref: '#/components/schemas/Assignment' + - $ref: '#/components/schemas/ApplicationUrl' + type: object + properties: + candidateId: + type: string + format: guid + jobId: + type: string + format: guid + Assignment: + type: object + properties: + status: + $ref: '#/components/schemas/CandidateStatusEnum' + subStatus: + type: string + startsOn: + type: string + format: date-time + source: + type: string + reasonOfRejection: + $ref: '#/components/schemas/Property' + reasonOfWithdrawal: + $ref: '#/components/schemas/Property' + actions: + type: object + properties: + sourceDetails: + $ref: '#/components/schemas/Action' + ApplicationUrl: + description: > + url property of a retrieved application represents current location of + its details. Please be aware that the resource location may change in + the future. + type: object + properties: + url: + type: string + Actions: + type: object + additionalProperties: + $ref: '#/components/schemas/Action' + Action: + type: object + required: + - url + - method + properties: + url: + type: string + method: + type: string + enum: + - GET + - POST + - PUT + - PATCH + - OPTIONS + - DELETE + - HEAD + - CONNECT + WebProfile: + type: object + properties: + skype: + type: string + linkedin: + type: string + facebook: + type: string + twitter: + type: string + website: + type: string + Experience: + type: object + properties: + title: + type: string + minLength: 1 + company: + type: string + minLength: 1 + current: + type: boolean + startDate: + $ref: '#/components/schemas/When' + endDate: + $ref: '#/components/schemas/When' + location: + type: string + description: + type: string + CandidateSource: + type: object + required: + - sourceTypeId + - sourceId + properties: + sourceTypeId: + type: string + minLength: 1 + sourceSubTypeId: + type: string + sourceId: + type: string + minLength: 1 + ScreeningAnswers: + type: object + required: + - totalFound + - content + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/ScreeningAnswer' + ScreeningAnswer: + type: object + required: + - id + - type + - category + - name + - label + - records + properties: + id: + type: string + description: Id of Question to which answer was responded + type: + type: string + enum: + - text + - checkbox + - languages + - acknowledgement + - textarea + - select + - files + - info + - eeo + - radio + - salaryExpectation + - currency + - work_shifts + category: + type: string + description: | + UUID for custom questions or fixed value for predefined questions: + - eeoInformation + - ofccpDisability + - ofccpVeteransForm + - veteranStatus + - disabilityStatus + - ofccpReasonableAccommodation + - ethnicity + - ethnicGroupsDescriptions + - todaysDate + - yourName + - preferredWorkShifts + - languages + - previousEmployment + - drivingRevoked + - drivingCurrent + - criminalRecord + - workPermit + name: + type: string + description: Question name visible to administrator on questions library list + label: + type: string + description: Question text shown to candidate + records: + type: array + description: >- + Multiple records may be used for example for questions (Preferred + Work Shifts, Languages) + items: + $ref: '#/components/schemas/AnswerRecord' + AnswerField: + type: object + required: + - id + - values + properties: + id: + type: string + label: + type: string + description: Field label shown to candidate - ignore when empty + values: + type: array + description: >- + Multiple values may be used for example for Multiselect Dropdown + question + items: + $ref: '#/components/schemas/AnswerFieldValue' + AnswerFieldValue: + type: object + required: + - id + - label + properties: + id: + type: string + description: Value text or value ID - depends on question definition + label: + type: string + description: Value text shown to candidate + CandidateStatusHistoryListElem: + type: object + properties: + changedOn: + type: string + format: date-time + status: + $ref: '#/components/schemas/CandidateStatusEnum' + subStatus: + type: string + actions: + $ref: '#/components/schemas/Actions' + CandidatePropertyType: + type: string + enum: + - BOOLEAN + - COUNTRY + - CURRENCY + - DATE + - NUMBER + - PERCENT + - REGION + - TEXT + - USER + - SINGLE_SELECT + CandidateConsentStatus: + type: object + required: + - status + properties: + date: + type: string + format: date-time + description: Available when `status` is `ACQUIRED` + status: + $ref: '#/components/schemas/ConsentStatus' + CandidateConsentDecisions: + type: object + required: + - decisions + properties: + decisions: + type: array + items: + $ref: '#/components/schemas/ConsentDecision' + recentPendingRequestCreatedOn: + type: string + format: date-time + ConsentDecision: + required: + - status + - scope + type: object + properties: + status: + $ref: '#/components/schemas/ConsentDecisionStatus' + scope: + $ref: '#/components/schemas/ConsentScope' + decidedOn: + type: string + format: date-time + description: >- + present when candidate has made a consent decision (i.e. `status` is + `acquired` or `declined`) + ConsentDecisionStatus: + type: string + description: | + * **acquired** - a candidate has decided to provide a consent + * **declined** - a candidate has decided to decline a consent + * **required** - a candidate has not made any decision yet, + enum: + - acquired + - declined + - required + ConsentScope: + type: string + description: > + Available when company uses single consent approach: + + * **Single** - a single consent to company privacy policy for all scopes + + Available when company uses separated consent approach: + + * **SmartRecruit** - indicates reading and understanding or accepting + company privacy policy for job applications, + + * **SmartCRM** - a consent to be part of company communities for future + career opportunities, + + * **SmartMessage:SMS** - a consent to receive text/SMS messages for job + applications and/or future career opportunities, + + * **SmartMessage:WhatsApp** - a consent to receive WhatsApp messages for + job applications and/or future career opportunities. + enum: + - Single + - SmartRecruit + - SmartCRM + - SmartMessage:SMS + - SmartMessage:WhatsApp + ConsentRequest: + type: object + required: + - id + properties: + id: + description: candidate id + type: string + ConsentStatus: + type: string + description: | + * **REQUIRED** - no request for consent yet, + * **PENDING** - consent requested, + * **ACQUIRED** - consent provided by a candidate + enum: + - REQUIRED + - PENDING + - ACQUIRED + ConsentRequestsResults: + type: object + required: + - results + properties: + results: + type: array + items: + oneOf: + - $ref: '#/components/schemas/ConsentRequestScheduled' + - $ref: '#/components/schemas/ConsentRequestUnavailable' + ConsentRequestScheduled: + type: object + required: + - status + - body + properties: + status: + type: integer + enum: + - 202 + body: + type: object + properties: + location: + type: string + ConsentRequestUnavailable: + type: object + required: + - status + properties: + status: + type: integer + enum: + - 403 + body: + type: boolean + enum: + - false + Property: + type: object + required: + - id + properties: + id: + type: string + minLength: 1 + label: + type: string + When: + type: string + format: when + description: >- + date in YYYY, YYYY-MM or YYYY-MM-dd format, ex. "2016", "2016-11", + "2016-11-29" + CandidatePropertyValue: + type: object + required: + - id + properties: + id: + type: string + format: uuid + value: + description: string, number, boolean or object + allOf: + - type: object + properties: + id: + type: string + format: alphanumericAndDash + minLength: 1 + maxLength: 36 + - $ref: '#/components/schemas/CandidatePropertyValueLabel' + Properties: + type: object + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/Property' + CompanyConfiguration: + type: object + properties: + identifier: + type: string + description: Identifier of a company. + name: + type: string + description: Company name. + location: + $ref: '#/components/schemas/Location' + website: + type: string + description: URL to company website. + industry: + $ref: '#/components/schemas/Industry' + logo: + type: string + description: URL to company logo. + JobPropertyDefinitionList: + type: object + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/JobPropertyDefinition' + JobPropertyDefinition: + type: object + required: + - label + - category + - visible + properties: + id: + type: string + label: + type: string + category: + type: string + enum: + - job + - organization + active: + type: boolean + visible: + type: boolean + required: + type: boolean + actions: + $ref: '#/components/schemas/Actions' + JobPropertyDefinitionCreationRequest: + type: object + required: + - label + - category + - visible + properties: + label: + type: string + category: + type: string + enum: + - job + - organization + active: + type: boolean + visible: + type: boolean + required: + type: boolean + JobPropertyValueDefinitionList: + type: object + properties: + totalFound: + type: integer + nextPageId: + type: string + content: + type: array + items: + $ref: '#/components/schemas/JobPropertyValueDefinition' + JobPropertyValueDefinition: + type: object + required: + - label + properties: + id: + type: string + pattern: ^[^/]+$ + minLength: 1 + maxLength: 100 + label: + type: string + minLength: 1 + maxLength: 200 + archived: + type: boolean + DependentJobPropertyValues: + type: object + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/DependentJobPropertyValue' + DependentJobPropertyValue: + allOf: + - $ref: '#/components/schemas/Identifiable' + - $ref: '#/components/schemas/Labeled' + DependentJobProperties: + type: object + required: + - totalFound + - content + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/DependentJobProperty' + DependentJobProperty: + type: object + required: + - id + - label + properties: + id: + type: string + minLength: 1 + maxLength: 100 + label: + type: string + minLength: 1 + maxLength: 200 + DependentJobPropertiesIds: + type: object + required: + - ids + properties: + ids: + type: array + items: + type: string + minLength: 1 + maxLength: 100 + minItems: 1 + DependentJobPropertyValuesRelations: + type: object + required: + - totalFound + - content + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/DependentJobPropertyValuesRelation' + DependentJobPropertyValuesRelation: + type: object + required: + - parent + - values + properties: + parent: + $ref: '#/components/schemas/RelationJobPropertyValue' + values: + type: array + items: + $ref: '#/components/schemas/RelationJobPropertyValue' + RelationJobPropertyValue: + required: + - id + type: object + properties: + id: + type: string + minLength: 1 + label: + type: string + Department: + type: object + required: + - label + properties: + id: + type: string + label: + type: string + description: + type: string + Departments: + type: object + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/Department' + HiringProcesses: + required: + - totalFound + - content + type: object + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/HiringProcess' + HiringProcess: + type: object + properties: + id: + type: string + name: + type: string + active: + type: boolean + subStatuses: + type: object + properties: + IN_REVIEW: + type: array + items: + type: string + INTERVIEW: + type: array + items: + type: string + OFFERED: + type: array + items: + type: string + OfferPropertiesDefinition: + type: object + properties: + categories: + type: array + items: + $ref: '#/components/schemas/OfferPropertiesCategory' + CandidatePropertyDefinitionList: + type: object + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/CandidatePropertyDefinition' + CandidatePropertyDefinition: + type: object + properties: + id: + type: string + label: + type: string + type: + $ref: '#/components/schemas/CandidatePropertyType' + availability: + $ref: '#/components/schemas/CandidatePropertyAvailability' + actions: + $ref: '#/components/schemas/Actions' + CandidatePropertyValueList: + type: object + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/CandidatePropertyValue' + CandidatePropertyValueLabel: + type: object + required: + - label + properties: + label: + type: string + format: value_label + minLength: 1 + maxLength: 1000 + SourceTypes: + type: object + required: + - totalFound + - content + properties: + totalFound: + type: integer + content: + type: array + items: + type: object + required: + - id + - label + - subtypes + - actions + properties: + id: + type: string + label: + type: string + actions: + type: object + required: + - values + properties: + values: + $ref: '#/components/schemas/Action' + subtypes: + type: array + minItems: 1 + items: + $ref: '#/components/schemas/Identifiable' + Sources: + type: object + required: + - totalFound + - limit + - offset + - content + properties: + totalFound: + type: integer + limit: + type: integer + offset: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/Source' + SourceDefinition: + type: object + required: + - label + - type + - subType + properties: + label: + type: string + subType: + $ref: '#/components/schemas/Identifiable' + type: + $ref: '#/components/schemas/Identifiable' + Source: + type: object + required: + - id + - label + - sourceSubType + - actions + properties: + id: + type: string + label: + type: string + sourceSubType: + $ref: '#/components/schemas/Identifiable' + actions: + type: object + required: + - sourceDetails + properties: + sourceDetails: + $ref: '#/components/schemas/Action' + Industry: + type: object + description: Company industry information. + properties: + id: + type: string + label: + type: string + OfferPropertiesCategory: + type: object + properties: + id: + type: string + properties: + type: array + items: + $ref: '#/components/schemas/OfferPropertyDefinition' + OfferPropertyDefinition: + type: object + properties: + key: + type: string + label: + type: string + required: + type: boolean + type: + type: string + enum: + - BOOLEAN + - COUNTRY + - CURRENCY + - DATE + - NUMBER + - PERCENT + - REGION + - TEXT + - USER + - SELECT + CandidatePropertyAvailability: + type: object + properties: + toUsers: + type: string + enum: + - ALL + - FULL_ACCESS + context: + type: array + items: + type: string + enum: + - HIRE_FORM + - OFFER_FORM + - PROFILE + - OFFER_APPROVAL_FORM + forOrgFields: + type: array + items: + $ref: '#/components/schemas/CandidatePropertyFilter' + CandidatePropertyFilter: + type: object + properties: + id: + type: string + values: + $ref: '#/components/schemas/CandidatePropertyFilterValues' + actions: + $ref: '#/components/schemas/Actions' + CandidatePropertyFilterValues: + type: object + properties: + all: + type: boolean + content: + type: array + items: + type: string + LanguageCode: + type: string + enum: + - af + - am + - ar + - hy + - az + - eu + - bn + - bg + - ca + - zh-CN + - zh-TW + - hr + - cs + - da + - nl + - en-GB + - en + - et + - fi + - fr + - fr-CA + - gl + - ka + - de + - el + - gu + - iw + - hi + - hu + - is + - id + - ga + - it + - ja + - kn + - km + - ko + - lo + - lv + - lt + - ms + - ml + - mr + - mn + - ne + - 'no' + - fa + - fil + - pl + - pt + - pt-BR + - pt-PT + - ro + - ru + - sr + - si + - sk + - sl + - es + - es-MX + - sw + - sv + - ta + - te + - tr + - uk + - ur + - vi + - cy + - zu + description: >- + Language code, can be two-letter for the standard variant or with + additional two letters after a hyphen to identify a specific locale + + + Value "pt-PT" is deprecated and will not work, use "pt" instead. + default: en + Identifiable: + type: object + required: + - id + properties: + id: + type: string + minLength: 1 + maxLength: 256 + Labeled: + type: object + required: + - label + properties: + label: + type: string + minLength: 1 + LabelTranslations: + type: array + items: + $ref: '#/components/schemas/LabelTranslation' + LabelTranslation: + type: object + properties: + label: + type: string + minLength: 1 + maxLength: 200 + language: + $ref: '#/components/schemas/LanguageCode' + required: + - label + - language + JSONPatch: + type: array + items: + type: object + description: one JSON Patch operation + allOf: + - description: Members common to all operations + type: object + required: + - op + - path + properties: + path: + $ref: '#/components/schemas/jsonPointer' + - $ref: '#/components/schemas/oneOperation' + oneOf: + - type: object + required: + - op + - value + properties: + op: + type: string + enum: + - add + - replace + - test + value: {} + - type: object + required: + - op + - from + properties: + op: + type: string + enum: + - move + - copy + from: + $ref: '#/components/schemas/jsonPointer' + - type: object + required: + - op + properties: + op: + type: string + enum: + - remove + example: + - path: /path + op: add + value: example + - path: /path + op: move + from: /origin + - path: /path + op: remove + path: + required: + - path + properties: + path: + $ref: '#/components/schemas/jsonPointer' + jsonPointer: + type: string + pattern: ^(/[^/~]*(~[01][^/~]*)*)*$ + FeedBrand: + type: object + properties: + id: + type: string + name: + type: string + logo: + type: string + FeedBudget: + type: object + properties: + price: + type: string + FeedBudgeting: + type: object + properties: + programmatic: + $ref: '#/components/schemas/FeedBudget' + FeedCompany: + type: object + properties: + cid: + type: string + name: + type: string + identifier: + type: string + FeedCompensation: + type: object + properties: + minimum: + type: string + maximum: + type: string + currency: + type: string + FeedDictionaryEntry: + type: object + properties: + id: + type: string + label: + type: string + FeedJobAd: + type: object + properties: + id: + type: string + uuid: + type: string + name: + type: string + refNumber: + type: string + status: + type: string + jobAdUrl: + type: string + liveUrl: + type: string + applyUrl: + type: string + comment: + type: string + postedDate: + type: string + location: + $ref: '#/components/schemas/FeedLocation' + company: + $ref: '#/components/schemas/FeedCompany' + brand: + $ref: '#/components/schemas/FeedBrand' + creator: + $ref: '#/components/schemas/FeedUser' + budget: + $ref: '#/components/schemas/FeedBudgeting' + compensation: + $ref: '#/components/schemas/FeedCompensation' + industry: + $ref: '#/components/schemas/FeedDictionaryEntry' + function: + $ref: '#/components/schemas/FeedDictionaryEntry' + experienceLevel: + $ref: '#/components/schemas/FeedDictionaryEntry' + typeOfEmployment: + $ref: '#/components/schemas/FeedDictionaryEntry' + languageCode: + type: string + jobAd: + $ref: '#/components/schemas/FeedJobAdDetails' + FeedJobAdDetails: + type: object + properties: + companyDescription: + type: string + jobDescription: + type: string + qualifications: + type: string + additionalInformation: + type: string + FeedLocation: + type: object + properties: + city: + type: string + region: + type: string + regionCode: + type: string + country: + type: string + countryCode: + type: string + address: + type: string + zipCode: + type: string + longitude: + type: string + latitude: + type: string + remote: + type: boolean + FeedUser: + type: object + properties: + firstName: + type: string + lastName: + type: string + email: + type: string + FeedPublication: + type: object + properties: + Provider: + type: string + offset: + type: string + description: int32 + limit: + type: string + description: int32 + totalFound: + type: string + description: int64 + jobs: + type: array + items: + $ref: '#/components/schemas/FeedJobAd' + PostingUpdateRequest: + type: object + properties: + liveUrl: + type: string + status: + type: string + comment: + type: string + UserId: + type: string + pattern: '[a-fA-F0-9]{24}' + description: Id of a user from User API + UuidReadOnly: + readOnly: true + type: string + format: guid + InterviewToUpdateInput: + type: object + properties: + location: + type: string + maxLength: 500 + timezone: + type: string + maxLength: 100 + description: Name of the timezone as described in TZ database + candidate: + $ref: '#/components/schemas/AttendeeStatus' + InterviewsList: + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/Interview' + Interview: + type: object + required: + - candidate + - jobId + - organizerId + - timezone + - timeslots + properties: + id: + $ref: '#/components/schemas/UuidReadOnly' + candidate: + $ref: '#/components/schemas/Candidate' + jobId: + $ref: '#/components/schemas/Uuid' + location: + type: string + maxLength: 500 + organizerId: + $ref: '#/components/schemas/UserId' + timezone: + type: string + description: Name of the timezone as described in TZ database + maxLength: 100 + timeslots: + $ref: '#/components/schemas/Timeslots' + createdOn: + type: string + format: date-time + description: If not set it defaults to current time + refUrl: + type: string + format: url + source: + type: string + readOnly: true + Timeslot: + type: object + required: + - startsOn + - endsOn + - interviewers + properties: + id: + $ref: '#/components/schemas/UuidReadOnly' + interviewType: + $ref: '#/components/schemas/InterviewType' + title: + type: string + maxLength: 200 + place: + type: string + maxLength: 500 + startsOn: + type: string + format: date-time + endsOn: + type: string + format: date-time + interviewers: + $ref: '#/components/schemas/Interviewers' + candidateStatus: + $ref: '#/components/schemas/AttendeeStatusValue' + Timeslots: + type: array + minItems: 1 + maxItems: 50 + items: + $ref: '#/components/schemas/Timeslot' + Interviewers: + type: array + minItems: 1 + maxItems: 50 + items: + $ref: '#/components/schemas/Interviewer' + Interviewer: + type: object + required: + - id + - status + properties: + id: + $ref: '#/components/schemas/UserId' + status: + $ref: '#/components/schemas/AttendeeStatusValue' + AttendeeStatusValue: + type: string + enum: + - accepted + - declined + - pending + - tentative + CandidateAttendeeStatusValue: + type: string + nullable: true + enum: + - accepted + - declined + - pending + - tentative + - null + deprecated: true + description: This property is deprecated. Use 'timeslot.candidateStatus' instead. + AttendeeStatus: + type: object + required: + - status + properties: + status: + $ref: '#/components/schemas/AttendeeStatusValue' + InterviewType: + type: string + maxLength: 400 + InterviewTypes: + type: array + minItems: 1 + maxItems: 2000 + items: + $ref: '#/components/schemas/InterviewType' + JobPositions: + type: object + required: + - totalFound + - content + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/JobPosition' + JobPosition: + type: object + required: + - id + properties: + id: + type: string + positionId: + type: string + type: + type: string + incumbentName: + type: string + positionOpenDate: + type: string + format: date-time + targetStartDate: + type: string + format: date-time + status: + type: string + JobPositionInput: + type: object + required: + - type + - positionOpenDate + - targetStartDate + properties: + positionId: + type: string + incumbentName: + type: string + type: + type: string + enum: + - NEW + - REPLACEMENT + positionOpenDate: + type: string + format: date-time + targetStartDate: + type: string + format: date-time + JobAdContent: + type: object + required: + - title + properties: + title: + type: string + format: title + minLength: 1 + language: + $ref: '#/components/schemas/JobAdLanguage' + jobAd: + $ref: '#/components/schemas/JobAdSections' + JobAds: + type: array + items: + $ref: '#/components/schemas/JobAdItem' + JobAdItem: + type: object + required: + - id + - title + - language + - jobAd + - createdOn + - updatedOn + - postingStatus + - default + - actions + - creator + - visibility + properties: + id: + type: string + title: + type: string + language: + $ref: '#/components/schemas/Language' + jobAd: + $ref: '#/components/schemas/JobAdSections' + createdOn: + type: string + format: date-time + updatedOn: + type: string + format: date-time + applyUrl: + type: string + format: url + postingStatus: + type: string + enum: + - PUBLISHED + - NOT_PUBLISHED + default: + type: boolean + actions: + type: object + required: + - postings + properties: + postings: + $ref: '#/components/schemas/Action' + creator: + $ref: '#/components/schemas/Identifiable' + visibility: + type: string + enum: + - PUBLIC + - INTERNAL + - PRIVATE + Publication: + type: object + properties: + aggregators: + type: boolean + default: true + visibility: + type: string + default: PUBLIC + enum: + - PUBLIC + - INTERNAL + JobAdPublicationScheduled: + type: object + properties: + postingStatus: + type: string + enum: + - PENDING + JobAdUnpublishScheduled: + type: object + properties: + unpostingStatus: + type: string + enum: + - PENDING + HeadcountUpdateAccepted: + type: object + properties: + status: + type: string + enum: + - PENDING + HeadcountPatchRequest: + type: object + properties: + salaryRange: + $ref: '#/components/schemas/SalaryRange' + PublicationList: + type: object + required: + - content + properties: + content: + type: array + items: + $ref: '#/components/schemas/PublicationListItem' + HiringTeamMembers: + type: object + properties: + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/HiringTeamMemberResponse' + HiringTeamMemberRole: + type: string + enum: + - HIRING_MANAGER + - INTERVIEW_TEAM + - RECRUITER + - EXECUTIVE + - COORDINATOR + HiringTeamMember: + allOf: + - $ref: '#/components/schemas/Identifiable' + - type: object + required: + - role + properties: + role: + anyOf: + - $ref: '#/components/schemas/HiringTeamMemberRole' + - type: string + HiringTeamMemberResponse: + allOf: + - $ref: '#/components/schemas/HiringTeamMember' + - type: object + properties: + actions: + type: object + required: + - details + properties: + details: + $ref: '#/components/schemas/Action' + JobNote: + type: object + required: + - content + properties: + content: + type: string + maxLength: 20000 + JobInput: + type: object + required: + - title + - function + - industry + - experienceLevel + - location + properties: + title: + type: string + minLength: 1 + maxLength: 256 + format: title + refNumber: + type: string + maxLength: 63 + targetHiringDate: + type: string + format: date-time + department: + $ref: '#/components/schemas/Identifiable' + location: + $ref: '#/components/schemas/JobLocationInput' + industry: + $ref: '#/components/schemas/Identifiable' + function: + $ref: '#/components/schemas/Identifiable' + typeOfEmployment: + $ref: '#/components/schemas/Identifiable' + experienceLevel: + $ref: '#/components/schemas/Identifiable' + eeoCategory: + $ref: '#/components/schemas/Identifiable' + template: + type: boolean + compensation: + $ref: '#/components/schemas/Compensation' + jobAd: + $ref: '#/components/schemas/JobAd' + properties: + type: array + items: + $ref: '#/components/schemas/JobPropertyInput' + Jobs: + type: object + properties: + limit: + type: integer + offset: + type: integer + nextPageId: + type: string + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/JobSummary' + JobSummary: + allOf: + - $ref: '#/components/schemas/Job' + - type: object + properties: + language: + $ref: '#/components/schemas/Language' + actions: + type: object + required: + - details + properties: + details: + $ref: '#/components/schemas/Action' + JobDetails: + allOf: + - $ref: '#/components/schemas/Job' + - type: object + properties: + targetHiringDate: + type: string + format: date-time + industry: + $ref: '#/components/schemas/Property' + function: + $ref: '#/components/schemas/Property' + typeOfEmployment: + $ref: '#/components/schemas/Property' + experienceLevel: + $ref: '#/components/schemas/Property' + eeoCategory: + $ref: '#/components/schemas/Property' + template: + type: boolean + creator: + $ref: '#/components/schemas/UserIdentity' + compensation: + $ref: '#/components/schemas/Compensation' + jobAd: + $ref: '#/components/schemas/JobAdInput' + properties: + type: array + items: + $ref: '#/components/schemas/JobProperty' + actions: + type: object + properties: + hiringTeam: + $ref: '#/components/schemas/Action' + publications: + $ref: '#/components/schemas/Action' + positions: + $ref: '#/components/schemas/Action' + applyOnWeb: + $ref: '#/components/schemas/Action' + details: + $ref: '#/components/schemas/Action' + JobLocationInput: + type: object + required: + - city + - countryCode + properties: + countryCode: + type: string + minLength: 2 + maxLength: 2 + regionCode: + type: string + minLength: 1 + maxLength: 256 + region: + type: string + minLength: 1 + maxLength: 256 + address: + type: string + minLength: 1 + maxLength: 2000 + postalCode: + type: string + minLength: 1 + maxLength: 32 + city: + type: string + minLength: 1 + maxLength: 128 + remote: + type: boolean + JobAdInput: + type: object + properties: + sections: + $ref: '#/components/schemas/JobAdSections' + language: + $ref: '#/components/schemas/Language' + JobPropertyInput: + allOf: + - $ref: '#/components/schemas/Identifiable' + - type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/JobPropertyValue' + JobStatusHistory: + type: object + required: + - totalFound + - content + properties: + totalFound: + type: integer + content: + type: array + items: + type: object + required: + - status + properties: + changedOn: + type: string + format: date-time + status: + $ref: '#/components/schemas/JobStatus' + actions: + type: object + required: + - user + properties: + user: + $ref: '#/components/schemas/Action' + JobAdLanguage: + type: object + required: + - code + properties: + code: + $ref: '#/components/schemas/LanguageCode' + JobAdSections: + type: object + properties: + companyDescription: + $ref: '#/components/schemas/JobAdSection' + jobDescription: + $ref: '#/components/schemas/JobAdSection' + qualifications: + $ref: '#/components/schemas/JobAdSection' + additionalInformation: + $ref: '#/components/schemas/JobAdSection' + videos: + $ref: '#/components/schemas/JobAdVideos' + sections: + type: object + properties: + companyDescription: + $ref: '#/components/schemas/JobAdSection' + jobDescription: + $ref: '#/components/schemas/JobAdSection' + qualifications: + $ref: '#/components/schemas/JobAdSection' + additionalInformation: + $ref: '#/components/schemas/JobAdSection' + videos: + $ref: '#/components/schemas/JobAdVideosSection' + JobAdSection: + type: object + properties: + title: + type: string + text: + type: string + maxLength: 24999 + JobAdVideos: + type: object + properties: + urls: + type: array + items: + type: string + format: video_url + PublicationListItem: + type: object + required: + - sourceName + - type + - publishedOn + properties: + sourceName: + type: string + type: + type: string + publishedOn: + type: string + format: date-time + unpublishedOn: + type: string + format: date-time + JobStatusUpdate: + type: object + required: + - status + properties: + status: + $ref: '#/components/schemas/ValidJobStatus' + ValidJobStatus: + type: string + enum: + - CREATED + - SOURCING + - FILLED + - INTERVIEW + - OFFER + - CANCELLED + - ON_HOLD + JobStatus: + type: string + enum: + - CREATED + - SOURCING + - FILLED + - INTERVIEW + - OFFER + - CANCELLED + - ON_HOLD + - OTHER + PostingStatus: + type: string + enum: + - PUBLIC + - INTERNAL + - NOT_PUBLISHED + - PRIVATE + Compensation: + type: object + properties: + min: + type: number + format: double + max: + type: number + format: double + currency: + type: string + JobAd: + type: object + properties: + sections: + $ref: '#/components/schemas/JobAdSections' + language: + $ref: '#/components/schemas/Language' + Language: + type: object + required: + - code + properties: + code: + type: string + label: + type: string + labelNative: + type: string + JobProperty: + type: object + required: + - id + - value + properties: + id: + type: string + minLength: 1 + label: + type: string + value: + $ref: '#/components/schemas/JobPropertyValue' + JobPropertyValue: + type: object + properties: + id: + type: string + minLength: 1 + maxLength: 256 + label: + type: string + UserIdentity: + type: object + properties: + id: + type: string + firstName: + type: string + lastName: + type: string + JobApproval: + type: object + properties: + approvalRequestId: + type: string + positions: + type: array + items: + $ref: '#/components/schemas/JobApprovalPosition' + salaryRange: + $ref: '#/components/schemas/SalaryRange' + SalaryRange: + type: object + properties: + min: + type: number + format: double + max: + type: number + format: double + currency: + type: string + JobApprovalPosition: + type: object + properties: + id: + type: string + positionId: + type: string + type: + type: string + incumbentName: + type: string + positionOpenDate: + type: string + format: date-time + targetStartDate: + type: string + format: date-time + status: + type: string + JobApplication: + type: object + properties: + status: + $ref: '#/components/schemas/JobApplicationStatus' + subStatus: + type: string + sourceIdentifier: + $ref: '#/components/schemas/Uuid' + createDate: + type: string + format: date-time + profileId: + $ref: '#/components/schemas/Uuid' + jobId: + $ref: '#/components/schemas/Uuid' + JobApplicationStatus: + type: string + enum: + - LEAD + - NEW + - IN_REVIEW + - INTERVIEW + - OFFERED + - HIRED + - REJECTED + - WITHDRAWN + - TRANSFERRED + Message: + type: object + required: + - content + properties: + content: + type: string + description: Content of the message + minLength: 1 + maxLength: 10000 + correlationId: + type: string + description: >- + CorrelationId is an optional parameter for you to add an additional + ID reference to the note. This will simply be appended onto the note + and will not be tracked/managed/process by SmartRecruiters in any + way. + shareWith: + $ref: '#/components/schemas/ShareWith' + MessageDetails: + type: object + properties: + id: + type: string + shareRequired: + type: boolean + MessagesView: + type: array + items: + $ref: '#/components/schemas/MessageView' + MessageView: + type: object + properties: + content: + type: string + createdOn: + type: string + format: date-time + visibility: + $ref: '#/components/schemas/Visibility' + authorId: + type: string + context: + $ref: '#/components/schemas/Context' + Context: + type: object + properties: + applications: + $ref: '#/components/schemas/Applications' + Applications: + type: array + items: + $ref: '#/components/schemas/Application' + Visibility: + type: string + enum: + - PUBLIC + - INTERNAL + ShareWith: + type: object + description: Sharing and message visibility options + properties: + users: + type: array + items: + type: string + description: List of users to share the message with + hiringTeamOf: + type: array + items: + type: string + description: List of jobs to share the message with its hiring teams + everyone: + type: boolean + description: Set the message to be visible to everyone in a company + openNote: + type: boolean + description: >- + Set the message to be visible to everyone in a company who has + access to #-tagged candidate + Offers: + type: object + required: + - totalFound + - content + properties: + limit: + type: integer + offset: + type: integer + totalFound: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/Offer' + Offer: + type: object + required: + - id + - status + - createdOn + - updatedOn + - actions + properties: + id: + type: string + status: + type: string + enum: + - CREATED + - PENDING_APPROVAL + - APPROVED + - NOT_APPROVED + - PENDING_ACCEPTANCE + - ACCEPTED + - NOT_ACCEPTED + - ABANDONED + createdOn: + type: string + format: date-time + updatedOn: + type: string + format: date-time + properties: + type: object + additionalProperties: + type: string + actions: + type: object + required: + - candidate + - details + properties: + candidate: + $ref: '#/components/schemas/Action' + job: + $ref: '#/components/schemas/Action' + details: + $ref: '#/components/schemas/Action' + OfferDocument: + type: object + properties: + id: + description: Id of the document + type: string + format: uuid + name: + description: Name of the document + type: string + createdDate: + description: 'Date when the document was created Format: yyyy-MM-ddTHH:mm:ss.SSSZZ' + type: string + format: date-time + OfferDocumentsList: + type: object + properties: + documents: + type: array + items: + $ref: '#/components/schemas/OfferDocument' + isCurrentlySyncing: + description: >- + Indicates if the documents are currently being synced with the + provider. If true, the documents list may be subject to change. + type: boolean + provider: + description: >- + Name of the provider that the documents are synced with. Currently + only DOCUSIGN is supported. + type: string + enum: + - DOCUSIGN + ApiAssessmentComment: + required: + - message + type: object + properties: + id: + type: string + createDate: + type: string + format: date-time + message: + pattern: .*\S+.* + type: string + messageToCandidate: + pattern: .*\S+.* + type: string + assessmentURL: + type: string + author: + $ref: '#/components/schemas/ApiContactPerson' + ApiContactPerson: + type: object + properties: + firstName: + type: string + lastName: + type: string + email: + type: string + phone: + type: string + ApiCommentRequest: + required: + - message + type: object + properties: + message: + pattern: .*\S+.* + type: string + messageToCandidate: + pattern: .*\S+.* + type: string + assessmentURL: + type: string + author: + $ref: '#/components/schemas/ApiContactPerson' + ApiAssessmentCommentListResult: + type: object + properties: + limit: + type: integer + format: int64 + offset: + type: integer + format: int64 + totalFound: + type: integer + format: int64 + content: + type: array + items: + $ref: '#/components/schemas/ApiAssessmentComment' + ApiAssessmentAttachment: + type: object + properties: + id: + type: string + createDate: + type: string + format: date-time + lastUpdateDate: + type: string + format: date-time + fileName: + type: string + ApiAttachment: + required: + - attachment + type: object + properties: + attachment: + type: string + format: binary + ApiAssessmentAttachmentListResult: + type: object + properties: + limit: + type: integer + format: int64 + offset: + type: integer + format: int64 + totalFound: + type: integer + format: int64 + content: + type: array + items: + $ref: '#/components/schemas/ApiAssessmentAttachment' + ApiAssessmentResult: + required: + - description + - title + type: object + properties: + id: + type: string + createDate: + type: string + format: date-time + title: + type: string + description: + type: string + passed: + type: boolean + score: + type: string + author: + $ref: '#/components/schemas/ApiContactPerson' + result: + type: string + resultType: + type: string + enum: + - DOCUMENT + - VIDEO_STREAM + - VIDEO_URL + - URL + - GENERATED_URL + ApiAssessmentResultListResult: + type: object + properties: + limit: + type: integer + format: int64 + offset: + type: integer + format: int64 + totalFound: + type: integer + format: int64 + content: + type: array + items: + $ref: '#/components/schemas/ApiAssessmentResult' + ApiAssessmentOrder: + required: + - candidate + - company + - job + - offer + - requestor + type: object + properties: + id: + type: string + status: + type: string + enum: + - NEW + - IN_PROGRESS + - REJECTED + - COMPLETED + createDate: + type: string + format: date-time + lastUpdateDate: + type: string + format: date-time + requestor: + $ref: '#/components/schemas/ApiContactPerson' + candidate: + $ref: '#/components/schemas/ApiCandidate' + job: + $ref: '#/components/schemas/ApiJob' + company: + $ref: '#/components/schemas/ApiCompany' + offer: + $ref: '#/components/schemas/ApiOffer' + ApiAvailability: + type: object + properties: + expirationDate: + type: string + format: date-time + industries: + type: array + items: + $ref: '#/components/schemas/ApiIndustry' + locations: + type: array + items: + $ref: '#/components/schemas/ApiLocation' + companies: + type: array + items: + type: string + specialOffer: + type: string + ApiCandidate: + type: object + properties: + id: + type: string + uuid: + type: string + firstName: + type: string + lastName: + type: string + email: + type: string + phone: + type: string + addressLine: + type: string + ApiCompany: + type: object + properties: + id: + type: string + name: + type: string + ApiExperienceLevel: + type: object + properties: + id: + type: string + label: + type: string + ApiFunction: + type: object + properties: + id: + type: string + label: + type: string + ApiIndustry: + type: object + properties: + id: + type: string + label: + type: string + ApiJob: + type: object + properties: + id: + type: string + uuid: + type: string + name: + type: string + industry: + $ref: '#/components/schemas/ApiIndustry' + function: + $ref: '#/components/schemas/ApiFunction' + experienceLevel: + $ref: '#/components/schemas/ApiExperienceLevel' + location: + $ref: '#/components/schemas/ApiLocation' + ApiLocation: + type: object + properties: + country: + type: string + region: + type: string + city: + type: string + ApiOffer: + required: + - catalogId + - description + - name + - terms + type: object + properties: + id: + type: string + createDate: + type: string + format: date-time + lastUpdateDate: + type: string + format: date-time + catalogId: + pattern: .*\S+.* + type: string + name: + pattern: .*\S+.* + type: string + description: + pattern: .*\S+.* + type: string + category: + type: string + terms: + $ref: '#/components/schemas/ApiTerms' + status: + type: string + enum: + - ACTIVE + - INACTIVE + - UNDER_REVIEW + - REJECTED + targetMarket: + $ref: '#/components/schemas/ApiTargetMarket' + availability: + $ref: '#/components/schemas/ApiAvailability' + ApiTargetMarket: + type: object + properties: + industries: + type: array + items: + $ref: '#/components/schemas/ApiIndustry' + functions: + type: array + items: + $ref: '#/components/schemas/ApiFunction' + experienceLevels: + type: array + items: + $ref: '#/components/schemas/ApiExperienceLevel' + locations: + type: array + items: + $ref: '#/components/schemas/ApiLocation' + ApiTerms: + required: + - price + type: object + properties: + type: + type: string + enum: + - REFERENCE_CHECK + - BEHAVIORAL_ASSESSMENT + - BACKGROUND_CHECK + - VIDEO_INTERVIEW + - SKILLS_TEST + - INLINE_ASSESSMENT + price: + $ref: '#/components/schemas/Money' + postingPeriod: + type: integer + format: int32 + costPerClick: + $ref: '#/components/schemas/Money' + existingContract: + type: object + additionalProperties: + type: object + Money: + required: + - amount + type: object + properties: + amount: + minimum: 0 + exclusiveMinimum: false + type: number + currencyCode: + type: string + ApiAssessmentOrderListResult: + type: object + properties: + limit: + type: integer + format: int64 + offset: + type: integer + format: int64 + totalFound: + type: integer + format: int64 + content: + type: array + items: + $ref: '#/components/schemas/ApiAssessmentOrder' + ApiAssessmentOrderRequest: + type: object + properties: + status: + type: string + enum: + - NEW + - IN_PROGRESS + - REJECTED + - COMPLETED + requestor: + $ref: '#/components/schemas/ApiContactPerson' + candidate: + $ref: '#/components/schemas/ApiCandidate' + job: + $ref: '#/components/schemas/ApiJob' + company: + $ref: '#/components/schemas/ApiCompany' + offer: + $ref: '#/components/schemas/ApiOffer' + Config: + required: + - id + type: object + properties: + id: + pattern: .*\S+.* + type: string + value: + type: string + ApiConfigListResult: + type: object + properties: + limit: + type: integer + format: int64 + offset: + type: integer + format: int64 + totalFound: + type: integer + format: int64 + content: + type: array + items: + $ref: '#/components/schemas/Config' + ApiListResult: + type: object + properties: + limit: + type: integer + format: int64 + offset: + type: integer + format: int64 + totalFound: + type: integer + format: int64 + content: + type: array + items: + type: object + ApiListResultApiOffer: + type: object + properties: + limit: + type: integer + format: int64 + offset: + type: integer + format: int64 + totalFound: + type: integer + format: int64 + content: + type: array + items: + $ref: '#/components/schemas/ApiOffer' + PostingList: + type: object + properties: + totalFound: + type: integer + limit: + type: integer + offset: + type: integer + content: + type: array + items: + $ref: '#/components/schemas/PostingItem' + PostingItem: + type: object + properties: + id: + type: string + uuid: + type: string + name: + type: string + jobAdId: + type: string + format: uuid + defaultJobAd: + type: boolean + refNumber: + type: string + company: + $ref: '#/components/schemas/Company' + releasedDate: + type: string + format: date-time + location: + $ref: '#/components/schemas/PostingLocation' + industry: + $ref: '#/components/schemas/Industry' + department: + $ref: '#/components/schemas/Department' + function: + $ref: '#/components/schemas/Function' + typeOfEmployment: + $ref: '#/components/schemas/TypeOfEmployment' + experienceLevel: + $ref: '#/components/schemas/ExperienceLevel' + customField: + type: array + items: + $ref: '#/components/schemas/CustomField' + ref: + type: string + creator: + $ref: '#/components/schemas/Creator' + language: + $ref: '#/components/schemas/Language' + visibility: + $ref: '#/components/schemas/Visibility' + Posting: + type: object + properties: + id: + type: string + uuid: + type: string + name: + type: string + jobId: + type: string + format: uuid + jobAdId: + type: string + format: uuid + defaultJobAd: + type: boolean + applyUrl: + type: string + postingUrl: + type: string + referralUrl: + type: string + refNumber: + type: string + company: + $ref: '#/components/schemas/Company' + releasedDate: + type: string + format: date-time + location: + $ref: '#/components/schemas/PostingLocation' + industry: + $ref: '#/components/schemas/Industry' + department: + $ref: '#/components/schemas/Department' + function: + $ref: '#/components/schemas/Function' + typeOfEmployment: + $ref: '#/components/schemas/TypeOfEmployment' + experienceLevel: + $ref: '#/components/schemas/ExperienceLevel' + customField: + type: array + items: + $ref: '#/components/schemas/CustomField' + ref: + type: string + creator: + $ref: '#/components/schemas/Creator' + jobAd: + $ref: '#/components/schemas/JobAdSections' + active: + type: boolean + visibility: + $ref: '#/components/schemas/Visibility' + Company: + type: object + properties: + identifier: + type: string + name: + type: string + PostingLocation: + type: object + properties: + country: + type: string + description: ISO 2-letter country code + region: + type: string + description: >- + This can be state, colloquial name, voivodeship or other area + description + city: + type: string + remote: + type: boolean + description: Indicates if employees can work remotely + latitude: + type: string + longitude: + type: string + Function: + type: object + properties: + id: + type: string + label: + type: string + TypeOfEmployment: + type: object + properties: + id: + type: string + label: + type: string + ExperienceLevel: + type: object + properties: + id: + type: string + enum: + - associate + - director + - entry_level + - executive + - internship + - mid_senior_level + - not_applicable + name: + type: string + CustomField: + type: object + properties: + fieldId: + type: string + fieldLabel: + type: string + valueId: + type: string + valueLabel: + type: string + Creator: + type: object + properties: + name: + type: string + JobAdLanguageCode: + type: string + enum: + - af + - am + - ar + - az + - bg + - bn + - ca + - cs + - cy + - da + - de + - el + - en + - en-GB + - es + - es-MX + - et + - eu + - fa + - fi + - fil + - fr + - fr-CA + - ga + - gl + - gu + - he + - hi + - hr + - hu + - hy + - id + - is + - it + - ja + - ka + - km + - kn + - ko + - lo + - lt + - lv + - ml + - mn + - mr + - ms + - ne + - nl + - 'no' + - pl + - pt + - pt-BR + - ro + - ru + - si + - sk + - sl + - sr + - sv + - sw + - ta + - te + - tr + - uk + - ur + - vi + - zh-CN + - zh-TW + - zu + JobAdVideosSection: + type: object + properties: + title: + type: string + urls: + type: array + items: + type: string + ApiBooleanValue: + type: object + properties: + value: + type: boolean + ApiColumnResponse: + type: object + properties: + entityTypeId: + type: string + entityInstanceId: + type: string + dataPointId: + type: string + dataPointInstanceId: + type: string + dataPointInstanceName: + type: string + dataPointName: + type: string + dataPointType: + type: string + enum: + - ID + - DATE + - NUMBER + - TEXT + - ENUM + - BOOLEAN + - DECIMAL + ApiDatePeriod: + required: + - period + - unit + type: object + properties: + period: + minimum: 1 + type: integer + format: int32 + unit: + type: string + enum: + - DAYS + - WEEKS + - MONTHS + - YEARS + fullPeriod: + type: boolean + ApiDateRange: + type: object + properties: + from: + type: string + format: date-time + to: + type: string + format: date-time + ApiFilterResponse: + type: object + properties: + column: + $ref: '#/components/schemas/ApiColumnResponse' + dateRange: + $ref: '#/components/schemas/ApiDateRange' + datePeriod: + $ref: '#/components/schemas/ApiDatePeriod' + rowValues: + $ref: '#/components/schemas/ApiRowValues' + booleanValue: + $ref: '#/components/schemas/ApiBooleanValue' + ApiReportFileResponse: + type: object + properties: + reportFileId: + type: string + reportId: + type: string + reportFileStatus: + type: string + enum: + - PENDING + - RUNNING + - COMPLETED + - FAILED + scheduleType: + type: string + enum: + - AD_HOC + - SCHEDULED + schedulingDate: + type: string + format: date-time + generationDate: + type: string + format: date-time + requestorId: + type: string + accessGroupId: + type: string + systemRoleId: + type: string + rowEntityTypeId: + type: string + rowEntityInstanceId: + type: string + columns: + type: array + items: + $ref: '#/components/schemas/ApiColumnResponse' + filters: + type: array + items: + $ref: '#/components/schemas/ApiFilterResponse' + errorReason: + type: string + enum: + - UNKNOWN + - MISSING_ACCESS_GROUP + - ACCESS_GROUP_MISMATCH + - MISSING_SYSTEM_ROLE + - SYSTEM_ROLE_MISMATCH + - REPORTING_AREA_RESTRICTED + - INCORRECT_ACCESS_CONFIGURATION + - MISSING_REPORT_CREATOR_EMPLOYEE + ApiRowValues: + required: + - values + type: object + properties: + noneValue: + type: boolean + values: + maxItems: 100 + minItems: 0 + type: array + items: + maxLength: 256 + minLength: 1 + type: string + ApiReportResponse: + type: object + properties: + reportId: + type: string + name: + type: string + rowEntityTypeId: + type: string + rowEntityInstanceId: + type: string + columns: + type: array + items: + $ref: '#/components/schemas/ApiColumnResponse' + filters: + type: array + items: + $ref: '#/components/schemas/ApiFilterResponse' + creationDate: + type: string + format: date-time + modificationDate: + type: string + format: date-time + creatorId: + type: string + modifierId: + type: string + grantees: + uniqueItems: true + type: array + items: + type: string + schedule: + $ref: '#/components/schemas/ApiSchedule' + reportTemplateId: + type: string + reportFormats: + uniqueItems: true + type: array + items: + type: string + enum: + - CSV + - EXCEL + accessGroupId: + type: string + systemRoleId: + type: string + ApiSchedule: + required: + - activityPeriod + - frequency + type: object + properties: + frequency: + type: string + enum: + - ANNUALLY + - MONTHLY + - WEEKLY + - DAILY + activityPeriod: + $ref: '#/components/schemas/ApiDateRange' + schedulingTime: + $ref: '#/components/schemas/ApiTimeRange' + ApiTime: + type: object + properties: + hour: + maximum: 23 + minimum: 0 + type: integer + format: int32 + minute: + maximum: 59 + minimum: 0 + type: integer + format: int32 + ApiTimeRange: + required: + - from + - to + type: object + properties: + from: + $ref: '#/components/schemas/ApiTime' + to: + $ref: '#/components/schemas/ApiTime' + zone: + type: string + ApiReportFilesResponse: + type: object + properties: + nextPage: + type: string + content: + type: array + items: + $ref: '#/components/schemas/ApiReportFileResponse' + ApiReportsResponse: + type: object + properties: + nextPage: + type: string + content: + type: array + items: + $ref: '#/components/schemas/ApiReportResponse' + Review: + type: object + properties: + id: + readOnly: true + $ref: '#/components/schemas/Uuid' + candidateId: + $ref: '#/components/schemas/Uuid' + jobId: + $ref: '#/components/schemas/Uuid' + reviewerId: + $ref: '#/components/schemas/UserId' + overallRating: + type: integer + comment: + type: string + createdOn: + type: string + format: date-time + updatedOn: + type: string + format: date-time + ReviewInput: + type: object + required: + - candidateId + - jobId + - overallRating + properties: + reviewerId: + $ref: '#/components/schemas/UserId' + candidateId: + $ref: '#/components/schemas/Uuid' + jobId: + $ref: '#/components/schemas/Uuid' + overallRating: + type: integer + minimum: 1 + maximum: 5 + comment: + type: string + createdOn: + type: string + format: date-time + ReviewToUpdateInput: + type: object + required: + - reviewerId + properties: + overallRating: + type: integer + minimum: 1 + maximum: 5 + comment: + type: string + reviewerId: + $ref: '#/components/schemas/UserId' + ActivityAssignmentAttachments: + type: object + required: + - attachmentIds + properties: + attachmentIds: + type: array + items: + $ref: '#/components/schemas/Uuid' + Assignments: + type: object + required: + - activityAssignments + - webFormAssignments + - fillablePdfFormAssignments + properties: + activityAssignments: + type: array + items: + $ref: '#/components/schemas/ActivityAssignment' + webFormAssignments: + type: array + items: + $ref: '#/components/schemas/WebFormAssignment' + fillablePdfFormAssignments: + type: array + items: + $ref: '#/components/schemas/FillablePdfFormAssignment' + ActivityAssignment: + type: object + required: + - id + - title + - description + - isFileUploadRequired + - hasSensitiveData + - isHighPriority + properties: + id: + $ref: '#/components/schemas/Uuid' + title: + type: string + description: + type: string + isFileUploadRequired: + type: boolean + hasSensitiveData: + type: boolean + isHighPriority: + type: boolean + WebFormAssignment: + type: object + required: + - id + - title + - description + - hasSensitiveData + - isHighPriority + properties: + id: + $ref: '#/components/schemas/Uuid' + title: + type: string + description: + type: string + hasSensitiveData: + type: boolean + isHighPriority: + type: boolean + FillablePdfFormAssignment: + type: object + required: + - id + - title + - description + - hasSensitiveData + - isHighPriority + - fileName + properties: + id: + $ref: '#/components/schemas/Uuid' + title: + type: string + description: + type: string + hasSensitiveData: + type: boolean + isHighPriority: + type: boolean + fileName: + type: string + WebFormFieldsMetadata: + type: object + required: + - fields + properties: + fields: + type: object + additionalProperties: + $ref: '#/components/schemas/WebFormFieldMetadata' + WebFormFieldMetadata: + type: object + required: + - type + - title + - isRequired + properties: + type: + type: string + title: + type: string + integrationKey: + type: string + hintText: + type: string + isRequired: + type: boolean + WebFormAnswers: + type: object + required: + - answers + properties: + answers: + $ref: '#/components/schemas/WebFormAnswer' + WebFormAnswer: + type: object + required: + - fieldId + - answerValue + properties: + fieldId: + type: string + integrationKey: + type: string + answerValue: + type: array + items: + type: string + NewHire: + type: object + required: + - id + - firstName + - lastName + - email + - socialMedia + properties: + id: + $ref: '#/components/schemas/Uuid' + firstName: + type: string + lastName: + type: string + email: + type: string + phone: + type: string + socialMedia: + $ref: '#/components/schemas/SocialMedia' + SocialMedia: + type: object + properties: + skype: + type: string + linkedIn: + type: string + facebook: + type: string + twitter: + type: string + website: + type: string + indeed: + type: string + OnboardingProcess: + type: object + required: + - id + - newHireId + - jobId + - applicationId + properties: + id: + $ref: '#/components/schemas/Uuid' + newHireId: + $ref: '#/components/schemas/Uuid' + employmentStartDate: + type: string + format: date + jobId: + $ref: '#/components/schemas/Uuid' + applicationId: + $ref: '#/components/schemas/Uuid' + SemanticErrorResponse: + type: object + properties: + message: + type: string + errors: + type: array + items: + $ref: '#/components/schemas/SemanticError' + SemanticError: + type: object + required: + - dataPath + - message + properties: + dataPath: + type: string + message: + type: string + LocationUpdateRequest: + type: object + description: >- + regionCode is not recommended to be used for countries other than the + United States. + properties: + countryCode: + type: string + minLength: 2 + maxLength: 2 + regionCode: + type: string + city: + type: string + minLength: 1 + address: + type: string + format: address + postalCode: + type: string + required: + - city + - countryCode + UserLanguageCode: + type: string + enum: + - bg + - cs + - da + - de + - el + - en + - es + - es-MX + - fi + - fr + - fr-CA + - hr + - hu + - id + - it + - ja + - lt + - nl + - 'no' + - pl + - pt + - pt-BR + - ro + - ru + - sk + - sl + - sr + - sv + - th + - tr + - uk + - vi + - zh-CN + - zh-TW + - ka + description: >- + Language assigned to user account. Language code, can be two-letter for + the standard variant or with additional two letters after a hyphen to + identify a specific locale + Users: + type: object + properties: + limit: + type: integer + nextPageId: + type: string + content: + type: array + items: + $ref: '#/components/schemas/UserListItem' + totalFound: + type: integer + offset: + type: integer + UserListItem: + allOf: + - $ref: '#/components/schemas/User' + - type: object + required: + - language + properties: + id: + type: string + active: + type: boolean + updatedOn: + type: string + format: date-time + User: + type: object + required: + - firstName + - lastName + - role + properties: + email: + type: string + format: email + firstName: + type: string + minLength: 1 + maxLength: 300 + format: name + lastName: + type: string + minLength: 1 + maxLength: 300 + format: name + systemRole: + $ref: '#/components/schemas/SystemRole' + externalData: + type: string + nullable: true + ssoIdentifier: + type: string + nullable: true + ssoLoginMode: + nullable: true + type: string + enum: + - SSO + - PASSWORD + description: >- + User level login mode setting. Possible values are: + + - SSO - user can login only through SSO + + - PASSWORD - user can login only by password + + + Notice: This setting _CAN_ be configured always, but it will be + respected only if: + + - SSO is enabled at company level + + - employee level SSO configuration functionality is enabled for + company + language: + type: object + required: + - code + properties: + code: + $ref: '#/components/schemas/UserLanguageCode' + role: + type: string + enum: + - EMPLOYEE + - RESTRICTED + - STANDARD + - EXTENDED + - ADMINISTRATOR + UserEntity: + allOf: + - required: + - language + - $ref: '#/components/schemas/User' + - type: object + properties: + id: + type: string + active: + type: boolean + updatedOn: + type: string + format: date-time + location: + $ref: '#/components/schemas/Location' + NewUser: + allOf: + - $ref: '#/components/schemas/User' + - type: object + properties: + ssoIdentifier: + type: string + maxLength: 100 + writeOnly: true + password: + type: string + writeOnly: true + location: + $ref: '#/components/schemas/LocationUpdateRequest' + SystemRoles: + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/SystemRole' + SystemRole: + type: object + required: + - id + properties: + id: + type: string + name: + type: string + AccessGroup: + type: object + properties: + id: + type: string + name: + type: string + AccessGroups: + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/AccessGroup' + UserIds: + type: array + maxItems: 5000 + items: + $ref: '#/components/schemas/UserId' + Seats: + type: array + description: >- + List of seat keys. Available values: smartPal, crm, recruitingAI, + textMessaging + items: + type: string + AnyValue: + anyOf: + - type: string + - type: number + - type: integer + - type: boolean + - type: array + items: {} + - type: object + add: + description: add operation. Value can be any JSON value. + properties: + op: + enum: + - add + value: + $ref: '#/components/schemas/AnyValue' + required: + - value + remove: + description: remove operation. Only a path is specified. + properties: + op: + enum: + - remove + replace: + description: replace operation. Value can be any JSON value. + properties: + op: + enum: + - replace + value: + $ref: '#/components/schemas/AnyValue' + required: + - value + move: + description: move operation. "from" is a JSON Pointer. + properties: + op: + enum: + - move + from: + $ref: '#/components/schemas/jsonPointer' + required: + - from + copy: + description: copy operation. "from" is a JSON Pointer. + properties: + op: + enum: + - copy + from: + $ref: '#/components/schemas/jsonPointer' + required: + - from + test: + description: test operation. Value can be any JSON value. + properties: + op: + enum: + - test + value: + $ref: '#/components/schemas/AnyValue' + required: + - value + oneOperation: + oneOf: + - $ref: '#/components/schemas/add' + - $ref: '#/components/schemas/remove' + - $ref: '#/components/schemas/replace' + - $ref: '#/components/schemas/move' + - $ref: '#/components/schemas/copy' + - $ref: '#/components/schemas/test' + JobWebhookPayload: + type: object + required: + - id + properties: + id: + type: string + JobAdWebhookPayload: + type: object + required: + - job_id + - job_ad_id + properties: + job_id: + type: string + job_ad_id: + type: string + JobAdPostingsWebhookPayload: + type: object + required: + - job_id + - job_ad_id + properties: + job_id: + type: string + job_ad_id: + type: string + PositionWebhookPayload: + type: object + required: + - job_id + - position_id + properties: + job_id: + type: string + position_id: + type: string + ApplicationWebhookPayload: + type: object + required: + - job_id + - candidate_id + - application_id + properties: + job_id: + type: string + candidate_id: + type: string + application_id: + type: string + ApplicationAttachmentWebhookPayload: + allOf: + - $ref: '#/components/schemas/ApplicationWebhookPayload' + - type: object + required: + - attachment_id + properties: + attachment_id: + type: string + CandidateWebhookPayload: + type: object + required: + - id + properties: + id: + type: string + OfferWebhookPayload: + type: object + required: + - job_id + - candidate_id + - offer_id + properties: + job_id: + type: string + candidate_id: + type: string + offer_id: + type: string + OfferApprovalWebhookPayload: + type: object + required: + - approval_id + - job_id + - candidate_id + - offer_id + properties: + approval_id: + type: string + job_id: + type: string + candidate_id: + type: string + offer_id: + type: string + JobApprovalWebhookPayload: + type: object + required: + - approval_id + - job_id + properties: + approval_id: + type: string + job_id: + type: string + SecretKeyPayload: + type: object + properties: + secretKey: + type: string + Subscriptions: + type: array + items: + $ref: '#/components/schemas/Subscription' + CallbackRequests: + type: array + items: + $ref: '#/components/schemas/CallbackRequest' + CallbackUrl: + type: string + format: https_url + example: https://server.com/send/callback/here + EmailAddress: + type: string + format: email + example: webhook.alerts@domain.com + CallbackAuthentication: + type: object + oneOf: + - $ref: '#/components/schemas/CallbackBasicAuth' + - $ref: '#/components/schemas/CallbackHeaderAuth' + - $ref: '#/components/schemas/CallbackOAuth2Auth' + example: + type: header + headerName: X-TOKEN + headerValue: J?7HSgUKm7!MPm+EKm^P4BwW4ywRRRVu + CallbackBasicAuth: + type: object + properties: + type: + type: string + enum: + - basic + username: + type: string + password: + type: string + example: + type: basic + username: basic-user + password: jVG8wzKZ%B+r_NkA + CallbackHeaderAuth: + type: object + properties: + type: + type: string + enum: + - header + headerName: + type: string + pattern: ^[Xx]- + description: Custom header name starting with "x-" + headerValue: + type: string + example: + type: header + username: token + password: J?7HSgUKm7!MPm+EKm^P4BwW4ywRRRVu + CallbackOAuth2Auth: + type: object + properties: + type: + type: string + enum: + - oauth2 + clientId: + type: string + description: OAuth2 client id used for token request + clientSecret: + type: string + description: OAuth2 client secret used for token request + tokenServiceUrl: + type: string + format: https_url + description: > + OAuth2 token service url. This serivce is expected to consume + `application/x-www-form-urlencoded` content + + type. The payload will consist of + + + `client_id=provided_client_id&client_secret=provided_client_secret&grant_type=client_credentials` + + + As a result, the service should return json containing information + about access token in form: + + + ``` + + { + access_token: 'access_token_value', + expires_in: 'amount_of_miliseconds' + } + + ```` + description: > + When `CallbackAuthentication` is set to `oauth2`, every call made to the + webhook callback url will incude header + + + `'authorization': Bearer access_token_value` + example: + type: oauth2 + clientId: oauth_client_123 + clientSecret: 9T{Z8OLl<~Si(=c + tokenServiceUrl: https://www.your-token-generator-service.com/tokens + Subscription: + type: object + properties: + id: + type: string + readOnly: true + callbackUrl: + $ref: '#/components/schemas/CallbackUrl' + events: + type: array + items: + $ref: '#/components/schemas/Event' + status: + type: string + readOnly: true + enum: + - inactive + - active + required: + - callbackUrl + - events + CallbackRequest: + type: object + properties: + status: + $ref: '#/components/schemas/CallbackRequestStatus' + timestamp: + description: > + Requests sent before timestamp. Format ISO8601: + yyyy-MM-ddTHH:mm:ss.SSSZZ + type: string + format: date-time + requestDetails: + description: details of callback request + type: object + properties: + url: + description: url to which callback was sent + type: string + body: + description: body of the request in form of stringified json. + type: string + headers: + description: headers set for the request + type: object + CallbackRequestStatus: + type: string + enum: + - successful + - failed + SubscriptionRequest: + type: object + properties: + callbackUrl: + $ref: '#/components/schemas/CallbackUrl' + events: + type: array + uniqueItems: true + minItems: 1 + items: + $ref: '#/components/schemas/EventName' + alertingEmailAddress: + $ref: '#/components/schemas/EmailAddress' + callbackAuthentication: + $ref: '#/components/schemas/CallbackAuthentication' + required: + - callbackUrl + - events + EventName: + type: string + enum: + - job.created + - job.updated + - job.status.updated + - job.hiring-team.updated + - job.ad.created + - job.ad.updated + - job.ad.postings.updated + - position.created + - position.updated + - position.deleted + - application.created + - application.status.updated + - application.fields.updated + - application.onboarding-status.updated + - application.attachment.created + - application.source.updated + - candidate.created + - candidate.updated + - candidate.deleted + - offer.created + - offer.updated + - offer.approval.created + - offer.approval.approved + - offer.approval.rejected + - offer.approval.abandoned + - offer.approval.step.approved + - offer.approval.step.rejected + - offer.approver.skipped + - offer.approver.delegated + - offer.approval.comment.created + - job.approval.created + - job.approval.approved + - job.approval.rejected + - job.approval.abandoned + - job.approval.step.approved + - job.approval.step.rejected + - job.approver.skipped + - job.approver.delegated + - job.approval.comment.created + - review.created + - review.updated + - review.deleted + - application.screening-answers.created + - application.screening-answers.updated + - onboarding.process.started + - onboarding.assignments.high-priority.completed + - onboarding.assignments.completed + ReviewWebhookPayload: + type: object + required: + - application_id + - review_id + properties: + application_id: + type: string + review_id: + type: string + ScreeningQuestionsAnswersWebhookPayload: + type: object + required: + - job_id + - candidate_id + - application_id + properties: + job_id: + type: string + candidate_id: + type: string + application_id: + type: string + OnboardingProcessWebhookPayload: + type: object + required: + - onboarding_process_id + - new_hire_id + properties: + onboarding_process_id: + type: string + new_hire_id: + type: string + OnboardingHighPriorityAssignmentsCompletedWebhookPayload: + type: object + required: + - onboarding_process_id + - new_hire_id + properties: + onboarding_process_id: + type: string + new_hire_id: + type: string + OnboardingAssignmentsCompletedWebhookPayload: + type: object + required: + - onboarding_process_id + - new_hire_id + properties: + onboarding_process_id: + type: string + new_hire_id: + type: string + securitySchemes: + key: + type: apiKey + name: x-smarttoken + in: header + oauth: + type: oauth2 + flows: + authorizationCode: + authorizationUrl: https://www.smartrecruiters.com/identity/oauth/allow + tokenUrl: https://api.smartrecruiters.com/identity/oauth/token + scopes: + approvals_read: Access Approval Requests + approvals_create: Create Approval Requests + approvals_decide: Approve or Reject Approval Requests + assessment_orders_read: Access Assessment Orders + audit_events_read: Access Audit Events + candidates_read: Access Candidates + candidates_create: Create Candidates + candidates_offers_read: Access Offer Terms + candidates_manage: Manage Candidate Status and Properties + candidate_status_read: Access Candidate's status + configuration_read: Access Company Settings + configuration_manage: Manage Company Settings + company_read: Access Company Information + interviews_read: Access Interviews and Timeslots + interviews_write: Create, update and delete Interviews and Timeslots + interview_types_read: Access Interview Types + interview_types_write: Create and delete Interview Types + jobs_read: Access Jobs + jobs_manage: Manage jobs + jobs_publications_manage: Publish Jobs + job_applications_read: Access Job Applications + messages_write: Message Users + messages_manage: Manage Messages + messages_read: Access Messages + reporting_read: Get analytics reports and download report files + reporting_write: Manage/execute analytics reports + reviews_read: Access Reviews + reviews_write: Create, update and delete Reviews + users_read: Access Users + user_me_read: Access information about my user + users_manage: Manage Users + webhooks_read: View webhook subscriptions + webhooks_write: Create new webhook subscription + webhooks_delete: Delete webhook subscription + webhooks_manage: View, create and delete webhook subscriptions + oauth2_master: + type: oauth2 + flows: + clientCredentials: + tokenUrl: https://api.smartrecruiters.com/identity/oauth/token + scopes: + partner_configuration_manage: >- + Allows modification of global configuration and creation of + customer level integrations + oauth2: + type: oauth2 + flows: + clientCredentials: + tokenUrl: https://www.partner.com/identity/oauth/token + scopes: + jobs_read: Allows reading job details + candidates_read: Allows reading candidate details + assessment_result_manage: Allows managing assessment result + packages_view: Allows reading list of assessment packages + orders_manage: Allows creating orders + responses: + ServerError: + description: Unexpected error + SemanticError: + description: Request body is invalid (e.g. values breaks model definition rules) + content: + application/json: + schema: + $ref: '#/components/schemas/SemanticErrorResponse' + SubscriptionNotFound: + description: Subscription not found. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + CallbackAccepted: + description: > + Your server implementation should return this HTTP status code if the + data was received successfully. + + We expect to get the response within 5 seconds. If we don't get response + during this period, we will + + considered webhook delivary as failed. + requestBodies: + OnboardingStatus: + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardingStatus' + description: Onboarding status. + required: true + CandidatePropertyInputValue: + content: + application/json: + schema: + $ref: '#/components/schemas/CandidatePropertyInputValue' + description: Input value of the candidate property. + CandidateInput: + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateInput' + description: Candidate object that needs to be created. + required: true + Resume: + content: + multipart/form-data: + schema: + type: object + properties: + sourceTypeId: + description: Candidate Source type id + type: string + sourceSubTypeId: + description: Candidate Source subtype id + type: string + sourceId: + description: Candidate Source id + type: string + internal: + description: Mark as company employee + type: boolean + file: + description: The resume file to parse. + type: string + format: binary + CandidateStatus: + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateStatus' + description: Candidate Status to be set + BatchConsentRequest: + content: + application/json: + schema: + type: object + required: + - content + properties: + content: + type: array + minItems: 1 + maxItems: 1000 + items: + $ref: '#/components/schemas/ConsentRequest' + BatchCandidatePropertyValue: + content: + application/json: + schema: + type: array + minItems: 1 + maxItems: 100 + items: + $ref: '#/components/schemas/CandidatePropertyValue' + JSONPatch: + content: + application/json-patch+json: + schema: + $ref: '#/components/schemas/JSONPatch' + example: + - op: replace + path: /firstName + value: firstNameValue + - op: add + path: /ssoIdentifier + value: ssoIdentifierValue + description: patch request + Publication: + content: + application/json: + schema: + $ref: '#/components/schemas/Publication' + description: Publication object + JobPositionInput: + content: + application/json: + schema: + $ref: '#/components/schemas/JobPositionInput' + description: Position body object + required: true + JobAdContent: + content: + application/json: + schema: + $ref: '#/components/schemas/JobAdContent' + description: job ad + required: true + JobCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/JobWebhookPayload' + JobAdCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/JobAdWebhookPayload' + JobAdPostingsCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/JobAdPostingsWebhookPayload' + PositionCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/PositionWebhookPayload' + ApplicationCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationWebhookPayload' + ApplicationAttachmentCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationAttachmentWebhookPayload' + CandidateCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/CandidateWebhookPayload' + OfferCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/OfferWebhookPayload' + OfferApprovalCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/OfferApprovalWebhookPayload' + JobApprovalCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/JobApprovalWebhookPayload' + ReviewCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/ReviewWebhookPayload' + ScreeningQuestionsAnswersCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/ScreeningQuestionsAnswersWebhookPayload' + OnboardingProcessCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardingProcessWebhookPayload' + OnboardingHighPriorityAssignmentsCompletedCallback: + content: + application/json: + schema: + $ref: >- + #/components/schemas/OnboardingHighPriorityAssignmentsCompletedWebhookPayload + OnboardingAssignmentsCompletedCallback: + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardingAssignmentsCompletedWebhookPayload' + parameters: + candidateId: + in: path + description: candidate identifier + name: id + required: true + schema: + type: string + jobId: + in: path + description: job identifier + name: jobId + required: true + schema: + type: string + attachmentId: + in: path + description: attachment identifier + name: attachmentId + required: true + schema: + type: string + jobPropertyId: + in: path + description: job property identifier + name: id + required: true + schema: + type: string + jobPropertyValueId: + in: path + description: job property's value identifier + name: valueId + required: true + schema: + type: string + jobPropertyDependentId: + in: path + description: job property's dependent identifier + name: dependentId + required: true + schema: + type: string + jobPropertyDependentValueId: + in: path + name: dependentValueId + description: job property's dependent value identifier + required: true + schema: + type: string + candidatePropertyId: + in: path + description: candidate property identifier + name: id + required: true + schema: + type: string + candidatePropertyValueId: + in: path + description: candidate property's value identifier + name: valueId + required: true + schema: + type: string + sourceType: + in: path + description: Source type from /configuration/sources + name: sourceType + required: true + schema: + type: string + sourceValueId: + in: path + description: Source id + name: sourceValueId + required: true + schema: + type: string + sourceSubType: + in: query + description: Source SubType from /configuration/sources + name: sourceSubType + required: false + schema: + type: string + language: + in: header + description: language of returned content + name: Accept-Language + required: false + schema: + $ref: '#/components/schemas/LanguageCode' + type: string + default: en + enum: + - af + - am + - ar + - hy + - az + - eu + - bn + - bg + - ca + - zh-CN + - zh-TW + - hr + - cs + - da + - nl + - en-GB + - en + - et + - fi + - fr + - fr-CA + - gl + - ka + - de + - el + - gu + - iw + - hi + - hu + - is + - id + - ga + - it + - ja + - kn + - km + - ko + - lo + - lv + - lt + - ms + - ml + - mr + - mn + - ne + - 'no' + - fa + - fil + - pl + - pt + - pt-BR + - pt-PT + - ro + - ru + - sr + - si + - sk + - sl + - es + - es-MX + - sw + - sv + - ta + - te + - tr + - uk + - ur + - vi + - cy + - zu + description: >- + Language code, can be two-letter for the standard variant or with + additional two letters after a hyphen to identify a specific locale + + + Value "pt-PT" is deprecated and will not work, use "pt" instead. + sourceIdentifier: + in: path + description: Source identifier + name: sourceIdentifier + required: true + schema: + type: string + format: uuid + minLength: 36 + maxLength: 36 + pageId: + in: query + description: identifier of the next page of subscriptions + name: page_id + required: false + schema: + type: string + pageSize: + in: query + description: pageSize + name: pageSize + required: false + schema: + type: integer + minimum: 1 + maximum: 20000 + ApplicationId: + in: query + name: applicationId + description: ID of the application + required: true + schema: + $ref: '#/components/schemas/Uuid' + InterviewId: + in: path + name: interviewId + description: ID of the interview + required: true + schema: + $ref: '#/components/schemas/Uuid' + TimeslotId: + in: path + name: timeslotId + description: ID of the timeslot + required: true + schema: + $ref: '#/components/schemas/Uuid' + UserId: + in: path + name: userId + description: ID of the user + required: true + schema: + $ref: '#/components/schemas/UserId' + InterviewType: + in: path + name: interviewType + description: Interview type name + required: true + schema: + $ref: '#/components/schemas/InterviewType' + jobAdId: + in: path + description: job ad identifier + name: jobAdId + required: true + schema: + type: string + positionId: + in: path + description: position identifier + name: positionId + required: true + schema: + type: string + JobApplicationId: + in: path + name: jobApplicationId + description: ID of job application + required: true + schema: + $ref: '#/components/schemas/Uuid' + MessageId: + in: path + description: identifier of a message + name: id + required: true + schema: + type: string + CandidateId: + in: query + description: identifier of a candidate + name: candidateId + required: true + schema: + type: string + format: guid + JobId: + in: query + description: identifier of a job + name: jobId + required: false + schema: + type: string + format: guid + PageId: + in: query + description: identifier of next page + name: pageId + required: false + schema: + type: string + Limit: + in: query + description: limit + name: limit + required: false + schema: + type: integer + default: 10 + minimum: 1 + maximum: 100 + ReviewId: + in: path + name: reviewId + description: ID of the review + required: true + schema: + $ref: '#/components/schemas/Uuid' + ReviewerId: + in: query + name: reviewerId + description: ID of the reviewer + required: true + schema: + $ref: '#/components/schemas/UserId' + NewHireId: + in: path + name: newHireId + description: ID of the New Hire + required: true + schema: + $ref: '#/components/schemas/Uuid' + OnboardingProcessId: + in: path + name: onboardingProcessId + description: ID of the Onboarding Process + required: true + schema: + $ref: '#/components/schemas/Uuid' + WebFormAssignmentId: + in: path + name: webFormAssignmentId + description: ID of the Web Form Assignment + required: true + schema: + $ref: '#/components/schemas/Uuid' + FillablePdfFormAssignmentId: + in: path + name: fillablePdfFormAssignmentId + description: ID of the Fillable PDF Form Assignment + required: true + schema: + $ref: '#/components/schemas/Uuid' + ActivityAssignmentId: + in: path + name: activityAssignmentId + description: ID of the Activity Assignment + required: true + schema: + $ref: '#/components/schemas/Uuid' + AttachmentId: + in: path + name: attachmentId + description: ID of the Attachment + required: true + schema: + $ref: '#/components/schemas/Uuid' + userId: + in: path + description: user identifier + name: id + required: true + schema: + type: string + systemRoleId: + in: path + description: system role identifier + name: id + required: true + schema: + type: string + accessGroupId: + in: path + description: access group identifier + name: accessGroupId + required: true + schema: + type: string + eventName: + name: event-name + in: header + description: event name + schema: + $ref: '#/components/schemas/EventName' + required: true + eventVersion: + name: event-version + in: header + description: event version + schema: + type: string + required: true + eventId: + name: event-id + in: header + description: event id, remains unchanged during consecutive retried callbacks + schema: + type: string + required: true + smartrecruitersSignature: + name: smartrecruiters-signature + in: header + description: >- + callback signature see at [Create + Signature](#subscriptions/subscriptions.generateSecretKey) + schema: + type: string + required: false + smartrecruitersTimestamp: + name: smartrecruiters-timestamp + in: header + description: >- + timestamp of callback signature see at [Create + Signature](#subscriptions/subscriptions.generateSecretKey) + schema: + type: number + required: false + Link: + name: Link + in: header + description: >- + Link to entity details is provided in the Link header according to + [RFC8288](https://tools.ietf.org/html/rfc8288). The relation type is + "self". + schema: + type: string + required: true + subscriptionId: + in: path + description: subscription identifier + name: id + required: true + schema: + type: string + limit: + in: query + name: limit + description: number of elements to return + schema: + type: integer + default: 10 + minimum: 1 + maximum: 100 + callbackStatus: + in: query + name: callbackStatus + description: status of callback, whan absent all statuses will be returned + schema: + type: string + enum: + - successful + - failed + after: + in: query + name: after + description: > + Requests sent after timestamp. Min value is 30 days ago. Format ISO8601: + yyyy-MM-ddTHH:mm:ss.SSSZZ + schema: + type: string + format: date-time + before: + in: query + name: before + description: > + Requests sent before timestamp. Min value is 30 days ago. Format + ISO8601: yyyy-MM-ddTHH:mm:ss.SSSZZ + schema: + type: string + format: date-time + callbacks: + onJobCreated: + '{$request.body#/callbackUrl}': + post: + summary: Job created webhook callback + operationId: onJobCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Job updated webhook callback + description: > + Events will be triggered when any of the following job properties is + changed: + + - `title` + + - `refNumber` + + - `department` + + - `location` + + - `targetHiringDate` + + - `industry` + + - `function` + + - `typeOfEmployment` + + - `experienceLevel` + + - `eooCategory` + + - `template` + + - any of job `properties` value + operationId: onJobUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobStatusUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Job status updated webhook callback + operationId: onJobStatusUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobHiringTeamUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Job hiring-team updated webhook callback + operationId: onJobHiringTeamUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobAdCreated: + '{$request.body#/callbackUrl}': + post: + summary: Job ad created webhook callback + operationId: onJobAdCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobAdCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobAdUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Job ad updated webhook callback + operationId: onJobAdUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobAdCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobAdPostingsUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Job ad postings updated webhook callback + operationId: onJobAdPostingsUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobAdPostingsCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onPositionCreated: + '{$request.body#/callbackUrl}': + post: + summary: Position created webhook callback + operationId: onPositionCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/PositionCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onPositionUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Position updated webhook callback + operationId: onPositionUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/PositionCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onPositionDeleted: + '{$request.body#/callbackUrl}': + post: + summary: Position deleted webhook callback + operationId: onPositionDeletededCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/PositionCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onApplicationCreated: + '{$request.body#/callbackUrl}': + post: + summary: Application created webhook callback + operationId: onApplicationCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ApplicationCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onApplicationStatusUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Application status updated webhook callback + operationId: onApplicationStatusUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ApplicationCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onApplicationFieldsUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Application fields updated webhook callback + operationId: onApplicationFieldsUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ApplicationCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onApplicationOnboardingStatusUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Application onboarding status updated webhook callback + operationId: onApplicationOnboardingStatusUpdated + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ApplicationCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onApplicationAttachmentCreated: + '{$request.body#/callbackUrl}': + post: + summary: Application attachment created webhook callback + operationId: onApplicationAttachmentCreated + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ApplicationAttachmentCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onApplicationSourceUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Application source updated webhook callback + operationId: onApplicationSourceUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ApplicationCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onCandidateCreated: + '{$request.body#/callbackUrl}': + post: + summary: Candidate created webhook callback + operationId: onCandidateCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/CandidateCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onCandidateUpdated: + '{$request.body#/callbackUrl}': + post: + description: > + Events will be triggered when any of the following candidate + properties is changed: + + - `firstName` + + - `lastName` + + - `email` + + - `phoneNumber` + + - `location` + + - `web` + + - `education` + + - `experience` + + - `internal` + + - `tags` + summary: Candidate updated webhook callback + operationId: onCandidateUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/CandidateCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onCandidateDeleted: + '{$request.body#/callbackUrl}': + post: + summary: Candidate created webhook callback + operationId: onCandidateDeletedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/CandidateCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferCreated: + '{$request.body#/callbackUrl}': + post: + summary: Offer created webhook callback + operationId: onOfferCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Offer updated webhook callback + operationId: onOfferUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferApprovalCreated: + '{$request.body#/callbackUrl}': + post: + summary: Created offer approval webhook callback + operationId: onOfferApprovalCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferApprovalApproved: + '{$request.body#/callbackUrl}': + post: + summary: Approved offer approval webhook callback + operationId: onOfferApprovalApprovedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferApprovalRejected: + '{$request.body#/callbackUrl}': + post: + summary: Rejected offer approval webhook callback + operationId: onOfferApprovalRejectedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferApprovalAbandoned: + '{$request.body#/callbackUrl}': + post: + summary: Abandoned offer approval webhook callback + operationId: onOfferApprovalAbandonedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferApprovalStepApproved: + '{$request.body#/callbackUrl}': + post: + summary: Approved offer approval step webhook callback + operationId: onOfferApprovalStepApprovedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferApprovalStepRejected: + '{$request.body#/callbackUrl}': + post: + summary: Rejected offer approval step webhook callback + operationId: onOfferApprovalStepRejectedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferApproverSkipped: + '{$request.body#/callbackUrl}': + post: + summary: Skipped offer approver webhook callback + operationId: onOfferApproverSkippedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferApproverDelegated: + '{$request.body#/callbackUrl}': + post: + summary: Delegated offer approver webhook callback + operationId: onOfferApproverDelegatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOfferApprovalCommentCreated: + '{$request.body#/callbackUrl}': + post: + summary: Created offer approval comment webhook callback + operationId: onOfferApprovalCommentCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OfferApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobApprovalCreated: + '{$request.body#/callbackUrl}': + post: + summary: Created job approval webhook callback + operationId: onJobApprovalCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobApprovalApproved: + '{$request.body#/callbackUrl}': + post: + summary: Approved job approval webhook callback + operationId: onJobApprovalApprovedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobApprovalRejected: + '{$request.body#/callbackUrl}': + post: + summary: Rejected job approval webhook callback + operationId: onJobApprovalRejectedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobApprovalAbandoned: + '{$request.body#/callbackUrl}': + post: + summary: Abandoned job approval webhook callback + operationId: onJobApprovalAbandonedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobApprovalStepApproved: + '{$request.body#/callbackUrl}': + post: + summary: Approved job approval step webhook callback + operationId: onJobApprovalStepApprovedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobApprovalStepRejected: + '{$request.body#/callbackUrl}': + post: + summary: Rejected job approval step webhook callback + operationId: onJobApprovalStepRejectedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobApproverSkipped: + '{$request.body#/callbackUrl}': + post: + summary: Skipped job approver webhook callback + operationId: onJobApproverSkippedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobApproverDelegated: + '{$request.body#/callbackUrl}': + post: + summary: Delegated job approver webhook callback + operationId: onJobApproverDelegatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onJobApprovalCommentCreated: + '{$request.body#/callbackUrl}': + post: + summary: Created job approval comment webhook callback + operationId: onJobApprovalCommentCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/JobApprovalCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onReviewCreated: + '{$request.body#/callbackUrl}': + post: + summary: Review created webhook callback + operationId: onReviewCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ReviewCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onReviewUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Review updated webhook callback + operationId: onReviewUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ReviewCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onReviewDeleted: + '{$request.body#/callbackUrl}': + post: + summary: Review deleted webhook callback + operationId: onReviewDeletedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ReviewCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onApplicationScreeningAnswersCreated: + '{$request.body#/callbackUrl}': + post: + summary: Screening answers created + operationId: onApplicationScreeningAnswersCreatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ScreeningQuestionsAnswersCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onApplicationScreeningAnswersUpdated: + '{$request.body#/callbackUrl}': + post: + summary: Screening answers updated + operationId: onApplicationScreeningAnswersUpdatedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/ScreeningQuestionsAnswersCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOnboardingProcessStarted: + '{$request.body#/callbackUrl}': + post: + summary: Onboarding process started + operationId: onOnboardingProcessStartedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OnboardingProcessCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOnboardingAssignmentsHighPriorityCompleted: + '{$request.body#/callbackUrl}': + post: + summary: Onboarding high priority assignments were completed + operationId: onOnboardingAssignmentsHighPriorityCompletedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: >- + #/components/requestBodies/OnboardingHighPriorityAssignmentsCompletedCallback + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' + onOnboardingAssignmentsCompleted: + '{$request.body#/callbackUrl}': + post: + summary: Onboarding all assignments were completed + operationId: onOnboardingAssignmentsCompletedCallback + parameters: + - $ref: '#/components/parameters/eventName' + - $ref: '#/components/parameters/eventVersion' + - $ref: '#/components/parameters/eventId' + - $ref: '#/components/parameters/Link' + - $ref: '#/components/parameters/smartrecruitersSignature' + - $ref: '#/components/parameters/smartrecruitersTimestamp' + requestBody: + $ref: '#/components/requestBodies/OnboardingAssignmentsCompletedCallback' + responses: + '202': + $ref: '#/components/responses/CallbackAccepted' +x-readme: + explorer-enabled: true + proxy-enabled: true + samples-enabled: true +_id: 63529e73531509001de49942 +tags: + - name: subscriptions + description: Manage your event subscriptions diff --git a/sdks/db/processed-custom-request-cache/smartrecruiters.com.yaml b/sdks/db/processed-custom-request-cache/smartrecruiters.com.yaml new file mode 100644 index 000000000..cfeeaa70b --- /dev/null +++ b/sdks/db/processed-custom-request-cache/smartrecruiters.com.yaml @@ -0,0 +1,81 @@ +processed: + securitySchemes: + key: + type: apiKey + name: x-smarttoken + in: header + oauth: + type: oauth2 + flows: + authorizationCode: + authorizationUrl: https://www.smartrecruiters.com/identity/oauth/allow + tokenUrl: https://api.smartrecruiters.com/identity/oauth/token + scopes: + approvals_read: Access Approval Requests + approvals_create: Create Approval Requests + approvals_decide: Approve or Reject Approval Requests + assessment_orders_read: Access Assessment Orders + audit_events_read: Access Audit Events + candidates_read: Access Candidates + candidates_create: Create Candidates + candidates_offers_read: Access Offer Terms + candidates_manage: Manage Candidate Status and Properties + candidate_status_read: Access Candidate's status + configuration_read: Access Company Settings + configuration_manage: Manage Company Settings + company_read: Access Company Information + interviews_read: Access Interviews and Timeslots + interviews_write: Create, update and delete Interviews and Timeslots + interview_types_read: Access Interview Types + interview_types_write: Create and delete Interview Types + jobs_read: Access Jobs + jobs_manage: Manage jobs + jobs_publications_manage: Publish Jobs + job_applications_read: Access Job Applications + messages_write: Message Users + messages_manage: Manage Messages + messages_read: Access Messages + reporting_read: Get analytics reports and download report files + reporting_write: Manage/execute analytics reports + reviews_read: Access Reviews + reviews_write: Create, update and delete Reviews + users_read: Access Users + user_me_read: Access information about my user + users_manage: Manage Users + webhooks_read: View webhook subscriptions + webhooks_write: Create new webhook subscription + webhooks_delete: Delete webhook subscription + webhooks_manage: View, create and delete webhook subscriptions + oauth2_master: + type: oauth2 + flows: + clientCredentials: + tokenUrl: https://api.smartrecruiters.com/identity/oauth/token + scopes: + partner_configuration_manage: >- + Allows modification of global configuration and creation of + customer level integrations + oauth2: + type: oauth2 + flows: + clientCredentials: + tokenUrl: https://www.partner.com/identity/oauth/token + scopes: + jobs_read: Allows reading job details + candidates_read: Allows reading candidate details + assessment_result_manage: Allows managing assessment result + packages_view: Allows reading list of assessment packages + orders_manage: Allows creating orders + apiBaseUrl: https://api.smartrecruiters.com/webhooks-api/v201907 + apiVersion: '201910.4' + apiDescription: SmartOnboard Public API + apiTitle: Webhooks + endpoints: 164 + sdkMethods: 317 + schemas: 352 + parameters: 528 + contactUrl: https://developers.smartrecruiters.com + originalCustomRequest: + lambda: true + customRequestSpecFilename: smartrecruiters.com.yaml + difficultyScore: 625 diff --git a/sdks/db/progress/smart-recruiters-progress.yaml b/sdks/db/progress/smart-recruiters-progress.yaml new file mode 100644 index 000000000..33fac9273 --- /dev/null +++ b/sdks/db/progress/smart-recruiters-progress.yaml @@ -0,0 +1,638 @@ +examples: {} +examples_2: {} +examples_3: + /integrations/companies/{companyId}: + delete: + '204': + application/json: {} + /packages/orders: + post: + '202': + application/json: {} +ignoreObjectsWithNoProperties: true +operationIds: + /access-groups: + get: Users_listAccessGroups + /access-groups/{accessGroupId}/users: + post: Users_assignToAccessGroup + /access-groups/{accessGroupId}/users/{id}: + delete: Users_removeFromAccessGroup + /activity-assignments/{activityAssignmentId}/attachments: + get: Assignmentssubmissions_listAttachments + /activity-assignments/{activityAssignmentId}/attachments/{attachmentId}: + get: Assignmentssubmissions_getSingleAttachment + /approvals: + get: Approvals_getPendingRequests + post: Approvals_createApprovalRequest + /approvals/{approvalRequestId}: + get: Approvals_getById + /approvals/{approvalRequestId}/approve-decisions: + post: Approvals_approveDecisions + /approvals/{approvalRequestId}/comments: + get: Approvals_getComments + post: Approvals_addCommentToRequest + /approvals/{approvalRequestId}/reject-decisions: + post: Approvals_rejectRequestById + /assessment-orders: + get: AssessmentOrders_getAllForApplication + /assessments: + get: Assessments_listByCriteria + post: Assessments_createNewOrder + /assessments/{assessmentOrderId}: + get: Assessments_getById + /assessments/{assessmentOrderId}/accept: + post: Assessments_acceptOrder + /assessments/{assessmentOrderId}/comments: + get: Comments_listByAssessmentOrderId + post: Comments_addNewCommentToAssessmentOrder + /assessments/{assessmentOrderId}/comments/{commentId}: + get: Comments_getById + /assessments/{assessmentOrderId}/complete: + post: Assessments_markAsCompleted + /assessments/{assessmentOrderId}/reject: + post: Assessments_rejectOrder + /assessments/{assessmentOrderId}/results: + get: Results_listByAssessmentOrderId + post: Results_submitNewAssessmentResult + /assessments/{assessmentOrderId}/results/{resultId}: + get: Results_findById + /assessments/{assessmentOrderId}/results/{resultId}/attachments: + get: Attachments_getList + post: Attachments_submitNewAssessmentResultFile + /assessments/{assessmentOrderId}/results/{resultId}/attachments/{attachmentId}: + get: Attachments_getDetails + post: Attachments_updateFile + /audit-events: + get: Audit_listEvents + /candidates: + get: Candidates_searchResults + post: Candidates_createWithSourceDetails + /candidates/attachments/{attachmentId}: + delete: Candidates_deleteAttachment + get: Candidates_getAttachment + /candidates/consent-requests: + post: Candidates_requestConsentFromMultiple + /candidates/cv: + post: Candidates_parseResumeAndAssignToTalentPool + /candidates/{id}: + delete: Candidates_removeCandidateById + get: Candidates_getDetails + patch: Candidates_updatePersonalInfo + /candidates/{id}/attachments: + get: Candidates_listAttachments + post: Candidates_attachFiles + /candidates/{id}/attachments/{attachmentId}: + get: Candidates_getAttachmentById + /candidates/{id}/consent: + get: Candidates_getStatusOfConsent + /candidates/{id}/consents: + get: Candidates_getConsentDecisions + /candidates/{id}/jobs/{jobId}: + get: Candidates_getApplicationDetails + /candidates/{id}/jobs/{jobId}/attachments: + get: Candidates_getAttachmentsByJobId + post: Candidates_attachFileToJobCandidate + /candidates/{id}/jobs/{jobId}/offers: + get: Offers_getCandidateJobOffers + /candidates/{id}/jobs/{jobId}/offers/{offerId}: + get: Offers_getCandidateOffer + /candidates/{id}/jobs/{jobId}/offers/{offerId}/approvals/latest: + get: Offers_getLatestApprovalRequest + /candidates/{id}/jobs/{jobId}/onboardingStatus: + get: Candidates_getOnboardingStatus + put: Candidates_setOnboardingStatus + /candidates/{id}/jobs/{jobId}/properties: + get: Candidates_getPropertyValuesForJob + put: Candidates_updateCandidateProperties + /candidates/{id}/jobs/{jobId}/properties/{propertyId}: + put: Candidates_updatePropertyValue + /candidates/{id}/jobs/{jobId}/screening-answers: + get: Candidates_getScreeningAnswersByJob + /candidates/{id}/jobs/{jobId}/source: + put: Candidates_updateSource + /candidates/{id}/jobs/{jobId}/status: + put: Candidates_updateStatus + /candidates/{id}/jobs/{jobId}/status/history: + get: Candidates_getStatusHistory + /candidates/{id}/onboardingStatus: + get: Candidates_getOnboardingStatus + put: Candidates_setOnboardingStatus + /candidates/{id}/properties: + get: Candidates_getPropertyValues + /candidates/{id}/properties/{propertyId}: + put: Candidates_updatePropertyValue + /candidates/{id}/status: + put: Candidates_updateStatusOnPrimaryAssignment + /candidates/{id}/status/history: + get: Candidates_getStatusHistory + /candidates/{id}/tags: + delete: Candidates_removeTags + get: Candidates_getTags + post: Candidates_addTagsToCandidate + put: Candidates_updateCandidateTags + /configs: + get: Configs_getList + post: Configs_addNewConfig + /configs/{configId}: + get: Configs_getByConfigId + post: Configs_updateConfigById + /configuration/candidate-properties: + get: Configuration_getCandidateProperties + /configuration/candidate-properties/{id}: + get: Configuration_getCandidatePropertyById + /configuration/candidate-properties/{id}/values: + get: Configuration_getCandidatePropertyValues + post: Configuration_createCandidatePropertyValue + /configuration/candidate-properties/{id}/values/{valueId}: + delete: Configuration_removeValue + get: Configuration_getCandidatePropertyValueById + put: Configuration_updatePropertyValueLabel + /configuration/company: + get: Configuration_getCompanyInformation + /configuration/departments: + get: Configuration_getDepartments + post: Configuration_createDepartment + /configuration/departments/{id}: + get: Configuration_getDepartmentById + /configuration/hiring-processes: + get: Configuration_getHiringProcesses + /configuration/hiring-processes/{id}: + get: Configuration_getHiringProcess + /configuration/job-properties: + get: Configuration_getAvailableProperties + post: Configuration_createJobProperty + /configuration/job-properties/{id}: + get: Configuration_getPropertyById + patch: Configuration_updateJobProperty + /configuration/job-properties/{id}/activation: + delete: Configuration_deactivateJobProperty + put: Configuration_activateJobProperty + /configuration/job-properties/{id}/archive-values/{valueId}: + delete: Configuration_unarchiveJobPropertyValue + put: Configuration_archiveJobPropertyValue + /configuration/job-properties/{id}/dependents: + get: Configuration_getJobPropertyDependents + post: Configuration_createJobPropertyDependents + /configuration/job-properties/{id}/dependents/{dependentId}: + delete: Configuration_removeDependent + /configuration/job-properties/{id}/dependents/{dependentId}/values: + get: Configuration_getDependentPropertyValues + /configuration/job-properties/{id}/translations: + patch: Configuration_addJobPropertyTranslations + /configuration/job-properties/{id}/values: + get: Configuration_getJobPropertyValues + post: Configuration_createJobPropertyValue + /configuration/job-properties/{id}/values/{valueId}: + delete: Configuration_archiveJobPropertyValue + patch: Configuration_updateJobPropertyValue + put: Configuration_unarchiveJobPropertyValue + /configuration/job-properties/{id}/values/{valueId}/dependents/{dependentId}/values: + get: Configuration_getDependentValues + post: Configuration_addDependentValue + /configuration/job-properties/{id}/values/{valueId}/dependents/{dependentId}/values/{dependentValueId}: + delete: Configuration_removeDependentValuesRelationship + /configuration/job-properties/{id}/values/{valueId}/translations: + patch: Configuration_addJobPropertyValueTranslations + /configuration/offer-properties: + get: Configuration_listOfferProperties + /configuration/rejection-reasons: + get: Configuration_getRejectionReasons + /configuration/sources: + get: Configuration_listCandidateSourceTypesWithSubtypes + /configuration/sources/{sourceIdentifier}: + get: Configuration_getCandidateSourceById + /configuration/sources/{sourceType}/values: + get: Configuration_listCandidateSourcesByType + /configuration/sources/{sourceType}/values/{sourceValueId}: + get: Configuration_getCandidateSource + /configuration/withdrawal-reasons: + get: Configuration_getWithdrawalReasons + /files/{reportFileId}: + get: Files_getFileDetails + /files/{reportFileId}/data: + get: Files_downloadReportData + /fillable-pdf-form-assignments/{fillablePdfFormAssignmentId}/form-answers: + get: Assignmentssubmissions_getFormAnswers + /integration: + get: Integration_showConsentFormOnPartnerSide + /integration/company/{companyId}: + post: Integration_integrationSetup + /integrations/companies/{companyId}: + delete: Integration_removeIntegrationOnPartnerSide + /interview-types: + get: InterviewTypes_getTypes + patch: InterviewTypes_addExistingTypes + /interview-types/{interviewType}: + delete: InterviewTypes_removeByType + /interviews: + get: Interviews_getList + post: Interviews_createNewInterview + /interviews/{interviewId}: + delete: Interviews_deleteById + get: Interviews_getDetails + patch: Interviews_modifyInterview + /interviews/{interviewId}/candidate/status: + put: Statuses_updateCandidateStatus + /interviews/{interviewId}/timeslots: + post: Timeslots_createNewTimeslot + /interviews/{interviewId}/timeslots/{timeslotId}: + delete: Timeslots_deleteTimeslot + get: Timeslots_getById + patch: Timeslots_modifyTimeSlot + /interviews/{interviewId}/timeslots/{timeslotId}/candidateStatus: + put: Statuses_updateCandidateTimeslotStatus + /interviews/{interviewId}/timeslots/{timeslotId}/interviewers/{userId}/status: + put: Statuses_updateInterviewerStatusInSlot + /job-applications/{jobApplicationId}: + get: Jobapplications_getById + /jobs: + get: Jobs_searchJobsByParams + post: Jobs_createNewJob + /jobs/{jobId}: + get: Jobs_getContentById + patch: Jobs_updateJobAttributes + put: Jobs_updateJobAndJobAd + /jobs/{jobId}/approvals/latest: + get: Jobs_getLatestApprovals + /jobs/{jobId}/candidates: + post: Candidates_createWithSource + /jobs/{jobId}/candidates/cv: + post: Candidates_parseResumeAndAssignToJob + /jobs/{jobId}/headcount: + patch: Jobs_updateHeadcount + /jobs/{jobId}/hiring-team: + get: Jobs_getHiringTeam + post: Jobs_addHiringTeamMember + /jobs/{jobId}/hiring-team/{userId}: + delete: Jobs_removeHiringTeamMember + /jobs/{jobId}/jobads: + get: Jobs_findJobAdsForJob + post: Jobs_createJobAd + /jobs/{jobId}/jobads/{jobAdId}: + get: Jobs_getJobAd + put: Jobs_updateJobAd + /jobs/{jobId}/jobads/{jobAdId}/postings: + delete: Jobs_unpublishJobAd + get: Jobs_listPublicationsForJobAd + post: Jobs_publishJobAdPostings + /jobs/{jobId}/note: + get: Jobs_getNoteById + put: Jobs_updateNote + /jobs/{jobId}/positions: + get: Jobs_getPositionsForJob + post: Jobs_createNewPosition + /jobs/{jobId}/positions/{positionId}: + delete: Jobs_deletePosition + get: Jobs_getSinglePosition + put: Jobs_updatePosition + /jobs/{jobId}/publication: + delete: Jobs_unpublishJobFromAllSources + get: Jobs_findPublications + post: Jobs_publishDefaultJobAd + /jobs/{jobId}/status: + put: Jobs_updateStatus + /jobs/{jobId}/status/history: + get: Jobs_getStatusHistory + /messages: + get: Messages_getByCandidateAndJobId + /messages/shares: + post: Messages_shareNewMessages + /messages/shares/{id}: + delete: Messages_deleteById + /new-hires/{newHireId}: + get: Newhires_getDetails + /oauth/token: + post: Token_exchangeCredentialsForAccessToken + /offers: + get: Offers_searchByCriteria + post: Offers_insertNewOffer + /offers/{offerId}: + get: Offers_getById + post: Offers_updateOffer + /offers/{offerId}/documents: + get: Offers_getRelatedDocuments + /offers/{offerId}/documents/{documentId}: + get: Offers_getDocument + /offers/{offerId}/submit: + post: Offers_submitForReview + /offers/{offerId}/withdraw: + post: Offers_withdrawal + /onboarding-processes/{onboardingProcessId}: + get: Onboardingprocesses_getDetails + /onboarding-processes/{onboardingProcessId}/assignments: + get: Assignments_getByProcessId + /orders/{orderId}/results: + patch: Result_updatePackageResult + /orders/{orderId}/results/attachment: + post: Result_addAttachmentToOrder + /packages: + get: Packages_getList + /packages/inline/orders: + post: Orders_assessPackageForCandidate + /packages/orders: + post: Orders_assessPackageForCandidate + /packages/{assessmentPackageId}: + get: Packages_getById + /partner/configuration: + get: Configuration_getDetails + put: Configuration_savePartnerConfig + /postings/{uuid}/candidates: + post: ApplicationApi_createNewCandidateApplication + /postings/{uuid}/candidates/{candidateId}/status: + get: ApplicationApi_getCandidateStatus + /postings/{uuid}/configuration: + get: ApplicationApi_getPostingConfiguration + /publications: + get: Feed_listPostings + /publications/{postingId}: + get: Feed_getPostingById + put: Feed_updatePostingInfo + /reports: + get: Reports_listByModificationDate + /reports/{reportId}: + get: Reports_getDetails + /reports/{reportId}/files: + get: Reports_getReportFiles + post: Reports_generateAdhocReportFile + /reports/{reportId}/files/recent: + get: Reports_getRecentFile + /reports/{reportId}/files/recent/data: + get: Reports_downloadRecentFile + /reviews: + get: Reviews_getAllForCandidateJob + post: Reviews_createReview + /reviews/{reviewId}: + delete: Reviews_deleteReviewById + get: Reviews_getById + patch: Reviews_updateReviewById + /subscriptions: + get: Subscriptions_getWebhookSubscriptions + post: Subscriptions_subscribeToWebhook + /subscriptions/{id}: + delete: Subscriptions_deleteWebhookSubscription + get: Subscriptions_getSingleWebhook + /subscriptions/{id}/activation: + put: Subscriptions_activateWebhookSubscription + /subscriptions/{id}/callbacks-log: + get: Subscriptions_getCallbackDetails + /subscriptions/{id}/secret-key: + get: Subscriptions_getSecretKey + post: Subscriptions_generateSecretKey + /system-roles: + get: Users_listSystemRoles + /users: + get: Users_list + post: Users_createNewUser + /users/me: + get: Users_getDetails + /users/{id}: + delete: Users_deactivateUser + get: Users_getDetails + patch: Users_updateUserById + /users/{id}/activation: + delete: Users_deactivateUserById + put: Users_activateUser + /users/{id}/activation-email: + post: Users_sendActivationEmail + /users/{id}/avatar: + put: Users_updateAvatar + /users/{id}/reset-password: + post: Users_sendPasswordResetEmail + /v1/companies/{companyIdentifier}/departments: + get: Postings_listDepartmentsForCompany + /v1/companies/{companyIdentifier}/postings: + get: Postings_listByCompanyIdentifier + /v1/companies/{companyIdentifier}/postings/{postingId}: + get: Postings_getByPostingIdOrUuid + /web-form-assignments/{webFormAssignmentId}/fields-metadata: + get: Assignmentssubmissions_getFieldsMetadata + /web-form-assignments/{webFormAssignmentId}/form-answers: + get: Assignmentssubmissions_getFormAnswers +operationTags: {} +renameTags: {} +requestSchemaNames: + /approvals: + post: + application/json: ApprovalsCreateApprovalRequestRequest + /approvals/{approvalRequestId}/approve-decisions: + post: + application/json: ApprovalsApproveDecisionsRequest + /approvals/{approvalRequestId}/comments: + post: + application/json: ApprovalsAddCommentToRequestRequest + /approvals/{approvalRequestId}/reject-decisions: + post: + application/json: ApprovalsRejectRequestByIdRequest + /candidates/consent-requests: + post: + application/json: CandidatesRequestConsentFromMultipleRequest + /candidates/cv: + post: + multipart/form-data: CandidatesParseResumeAndAssignToTalentPoolRequest + /candidates/{id}/attachments: + post: + multipart/form-data: CandidatesAttachFilesRequest + /candidates/{id}/jobs/{jobId}/attachments: + post: + multipart/form-data: CandidatesAttachFileToJobCandidateRequest + /candidates/{id}/jobs/{jobId}/properties: + put: + application/json: CandidatesUpdateCandidatePropertiesRequest + /orders/{orderId}/results/attachment: + post: + multipart/form-data: ResultAddAttachmentToOrderRequest + /users/{id}/avatar: + put: + multipart/form-data: UsersUpdateAvatarRequest +responseDescriptions: {} +responseSchemaNames: + /activity-assignments/{activityAssignmentId}/attachments/{attachmentId}: + get: + '200': + application/octet-stream: AssignmentssubmissionsGetSingleAttachmentResponse + /files/{reportFileId}/data: + get: + '200': + text/csv: FilesDownloadReportDataResponse + /fillable-pdf-form-assignments/{fillablePdfFormAssignmentId}/form-answers: + get: + '200': + application/pdf: AssignmentssubmissionsGetFormAnswersResponse + /integration: + get: + '200': + text/html: IntegrationShowConsentFormOnPartnerSideResponse + /integrations/companies/{companyId}: + delete: + '204': + application/json: IntegrationRemoveIntegrationOnPartnerSideResponse + /offers/{offerId}/documents/{documentId}: + get: + '200': + application/octet-stream: OffersGetDocumentResponse + /packages: + get: + '200': + application/json: PackagesGetListResponse + /packages/orders: + post: + '202': + application/json: OrdersAssessPackageForCandidateResponse + /reports/{reportId}/files/recent/data: + get: + '200': + text/csv: ReportsDownloadRecentFileResponse + /reviews: + get: + '200': + application/json: ReviewsGetAllForCandidateJobResponse +securityParameters: + Accept-Language: + header: false + If-None-Match: + header: false + accept-language: + header: false + activeOnly: + query: false + address: + query: false + after: + query: false + applicationId: + query: false + authorId: + query: false + authorType: + query: false + averageRating: + query: false + before: + query: false + callbackStatus: + query: false + candidateId: + query: false + candidateUuid: + query: false + city: + query: false + companyId: + query: false + conditionalsIncluded: + query: false + consentStatus: + query: false + context: + query: false + country: + query: false + country-code: + query: false + customField: + query: false + department: + query: false + destination: + query: false + entityId: + query: false + entityType: + query: false + eventDateAfter: + query: false + eventDateBefore: + query: false + eventName: + query: false + fromDate: + query: false + jobId: + query: false + jobUuid: + query: false + language: + query: false + lastActivityAfter: + query: false + limit: + query: false + location: + query: false + locationType: + query: false + nextPageId: + query: false + offset: + query: false + onboardingStatus: + query: false + page: + query: false + pageId: + query: false + pageSize: + query: false + page_id: + query: false + partner-field-id: + query: false + postal-code: + query: false + postingId: + query: false + postingStatus: + query: false + propertyId: + query: false + propertyValueId: + query: false + q: + query: false + questionCategory: + query: false + questionFieldId: + query: false + questionFieldValueId: + query: false + region: + query: false + region-abbr: + query: false + releasedAfter: + query: false + remote: + query: false + requester: + header: false + reviewerId: + query: false + sort: + query: false + sortBy: + query: false + sortDir: + query: false + sourceId: + query: false + sourceSubType: + query: false + sourceSubTypeId: + query: false + sourceType: + query: false + sourceTypeId: + query: false + sourceValueId: + query: false + status: + query: false + subStatus: + query: false + tag: + query: false + toDate: + query: false + updatedAfter: + query: false +validServerUrls: {} diff --git a/sdks/db/published/from-custom-request_bl.ink.json b/sdks/db/published/from-custom-request_bl.ink.json index 2ea41c67a..f89f1159e 100644 --- a/sdks/db/published/from-custom-request_bl.ink.json +++ b/sdks/db/published/from-custom-request_bl.ink.json @@ -19,7 +19,7 @@ "company": "BL.INK", "sdkName": "bl-ink-{language}-sdk", "clientName": "BlInk", - "metaDescription": "BL.INK powers shortened URLs and QR codes with unlimited data and flexibility. \n\nWith BL.INK, you'll create thousands of custom links that capture unlimited data points so you can measure every user touchpoint and perfect every interaction. \n\nEveryone on your team can create perfect data to accurately measure every element of marketing attribution. Every customer than visits your link gets the information they need, every time, with no broken links. \n\nNeed to change the link when a contest ends, or show the page in the user's own language? It's easy with BL.INK. \n\nNo other URL shortener or QR code creator integrates with your existing tools, helps you avoid broken links, enables zero down-time when updating links, and has a platform built based on how enterprise companies work. Only BL.INK. Trusted by demanding global brands since 2008.", + "metaDescription": "BL.INK powers shortened URLs and QR codes with unlimited data and flexibility.\n\nWith BL.INK, you'll create thousands of custom links that capture unlimited data points so you can measure every user touchpoint and perfect every interaction.\n\nEveryone on your team can create perfect data to accurately measure every element of marketing attribution. Every customer than visits your link gets the information they need, every time, with no broken links.\n\nNeed to change the link when a contest ends, or show the page in the user's own language? It's easy with BL.INK.\n\nNo other URL shortener or QR code creator integrates with your existing tools, helps you avoid broken links, enables zero down-time when updating links, and has a platform built based on how enterprise companies work. Only BL.INK. Trusted by demanding global brands since 2008.", "apiStatusUrls": false, "homepage": "www.bl.ink/", "developerDocumentation": "developers.bl.ink/", @@ -1693,14 +1693,14 @@ ] } ], - "repositoryDescription": "BL.INK powers shortened URLs and QR codes with unlimited data and flexibility to measure user touchpoints and marketing attribution accurately. Create custom links easily, avoid broken links, and seamlessly update content. Trusted by global brands since 2008. BL.INK's {language} SDK generated by Konfig (https://konfigthis.com/).", + "repositoryDescription": "BL.INK provides powerful URL shortening and QR code generation with robust data tracking capabilities. Create custom links, measure user touchpoints, and optimize marketing attribution effortlessly. Integrate seamlessly with existing tools and ensure zero downtime for link updates. Trusted by leading global brands.", "logo": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/bl-ink/logo.png", "openApiRaw": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/bl-ink/openapi.yaml", "openApiGitHubUi": "https://github.com/konfig-sdks/openapi-examples/tree/HEAD/bl-ink/openapi.yaml", "previewLinkImage": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/bl-ink/imagePreview.png", "faviconUrl": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/bl-ink/favicon.png", "clientNameCamelCase": "blInk", - "lastUpdated": "2024-03-28T00:16:38.181Z", + "lastUpdated": "2024-03-28T00:30:05.996Z", "typescriptSdkUsageCode": "import { BlInk } from 'bl-ink-typescript-sdk';\n\nconst blInk = new BlInk()", "typescriptSdkFirstRequestCode": "// Validates login information\nconst informationResponse = blInk.validateLogin.information({\n email: \"bud@smartlinker.email\"\n password: \"PASSWORD\"\n})", "fixedSpecFileName": "bl-ink-fixed-spec.yaml" diff --git a/sdks/db/published/from-custom-request_recruiterflow.com.json b/sdks/db/published/from-custom-request_recruiterflow.com.json index e92c19182..8aebe52a8 100644 --- a/sdks/db/published/from-custom-request_recruiterflow.com.json +++ b/sdks/db/published/from-custom-request_recruiterflow.com.json @@ -19,7 +19,7 @@ "company": "Recruiterflow", "sdkName": "recruiterflow-{language}-sdk", "clientName": "Recruiterflow", - "metaDescription": "Recruiterflow is a dedicated Applicant Tracking, CRM and Recruiting platform for Ambitious Recruiting & executive search firms. What makes Recruiterflow different from other ATS and recruiting CRM products, is Recruiting automation, simplicity and ease of use. \n\nIt offers drag-and-drop workflows, email and text messaging, API integrations, and ATS capabilities. It also encompasses advanced functionalities like candidate portals, company blocking, automatic email tracking, job board posting, built-in report analytics and more. With its G Suite and office365 integration, you can two-way sync emails to clients and candidates.\n\nWith Recruiterflow you can manage & maintain your candidate and client pipeline, post jobs across multiple job boards and track candidates, write personalized well-crafted email sequences, deliver candidate experience without extra efforts and get a detailed insight about the performance of your team and recruiting effort. \n\nYou can review your recruiting strategy and performance in real time using Recruiterflow's real-time statistics. You can also build your own custom apps on Recruiterflow using open APIs.\n\nRecruiterflow's user interface is designed to be effortlessly navigable, ensuring recruiters can quickly adapt to the platform without extensive training. You just need to sign in with your work email id and you are good to go. We provide a free trial of the product for 7 days.", + "metaDescription": "Recruiterflow is a dedicated Applicant Tracking, CRM and Recruiting platform for Ambitious Recruiting & executive search firms. What makes Recruiterflow different from other ATS and recruiting CRM products, is Recruiting automation, simplicity and ease of use.\n\nIt offers drag-and-drop workflows, email and text messaging, API integrations, and ATS capabilities. It also encompasses advanced functionalities like candidate portals, company blocking, automatic email tracking, job board posting, built-in report analytics and more. With its G Suite and office365 integration, you can two-way sync emails to clients and candidates.\n\nWith Recruiterflow you can manage & maintain your candidate and client pipeline, post jobs across multiple job boards and track candidates, write personalized well-crafted email sequences, deliver candidate experience without extra efforts and get a detailed insight about the performance of your team and recruiting effort.\n\nYou can review your recruiting strategy and performance in real time using Recruiterflow's real-time statistics. You can also build your own custom apps on Recruiterflow using open APIs.\n\nRecruiterflow's user interface is designed to be effortlessly navigable, ensuring recruiters can quickly adapt to the platform without extensive training. You just need to sign in with your work email id and you are good to go. We provide a free trial of the product for 7 days.", "apiStatusUrls": "inherit", "homepage": "recruiterflow.com", "developerDocumentation": "recruiterflow.com/api", @@ -4551,14 +4551,14 @@ ] } ], - "repositoryDescription": "Recruiterflow: ATS & CRM for recruiting firms with automation, workflows, API integrations, candidate portals, advanced analytics, and G Suite integration. User-friendly interface, real-time stats, custom apps, and 7-day free trial. Recruiterflow's {language} SDK generated by Konfig (https://konfigthis.com/).", + "repositoryDescription": "Recruiterflow: ATS & CRM platform for recruiting firms with automation, simplicity, and advanced features. Drag-and-drop workflows, email/text, API integrations, ATS, candidate portals, job board posting, G Suite/Office365 sync, real-time analytics, and custom app development.", "logo": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/recruiterflow/logo.png", "openApiRaw": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/recruiterflow/openapi.yaml", "openApiGitHubUi": "https://github.com/konfig-sdks/openapi-examples/tree/HEAD/recruiterflow/openapi.yaml", "previewLinkImage": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/recruiterflow/imagePreview.png", "faviconUrl": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/recruiterflow/favicon.png", "clientNameCamelCase": "recruiterflow", - "lastUpdated": "2024-03-28T00:17:09.977Z", + "lastUpdated": "2024-03-28T00:30:05.996Z", "typescriptSdkUsageCode": "import { Recruiterflow } from 'recruiterflow-typescript-sdk';\n\nconst recruiterflow = new Recruiterflow()", "typescriptSdkFirstRequestCode": "// Add candidate/contact to campaign\nconst addToCampaignResponse = recruiterflow.campaignApIs.addToCampaign({\n contentType: \"application/json\"\n})", "fixedSpecFileName": "recruiterflow-fixed-spec.yaml" diff --git a/sdks/db/published/from-custom-request_smartrecruiters.com.json b/sdks/db/published/from-custom-request_smartrecruiters.com.json new file mode 100644 index 000000000..39503f12a --- /dev/null +++ b/sdks/db/published/from-custom-request_smartrecruiters.com.json @@ -0,0 +1,9202 @@ +{ + "securitySchemes": { + "key": { + "type": "apiKey", + "name": "x-smarttoken", + "in": "header" + }, + "oauth": { + "type": "oauth2", + "flows": { + "authorizationCode": { + "authorizationUrl": "https://www.smartrecruiters.com/identity/oauth/allow", + "tokenUrl": "https://api.smartrecruiters.com/identity/oauth/token", + "scopes": { + "approvals_read": "Access Approval Requests", + "approvals_create": "Create Approval Requests", + "approvals_decide": "Approve or Reject Approval Requests", + "assessment_orders_read": "Access Assessment Orders", + "audit_events_read": "Access Audit Events", + "candidates_read": "Access Candidates", + "candidates_create": "Create Candidates", + "candidates_offers_read": "Access Offer Terms", + "candidates_manage": "Manage Candidate Status and Properties", + "candidate_status_read": "Access Candidate's status", + "configuration_read": "Access Company Settings", + "configuration_manage": "Manage Company Settings", + "company_read": "Access Company Information", + "interviews_read": "Access Interviews and Timeslots", + "interviews_write": "Create, update and delete Interviews and Timeslots", + "interview_types_read": "Access Interview Types", + "interview_types_write": "Create and delete Interview Types", + "jobs_read": "Access Jobs", + "jobs_manage": "Manage jobs", + "jobs_publications_manage": "Publish Jobs", + "job_applications_read": "Access Job Applications", + "messages_write": "Message Users", + "messages_manage": "Manage Messages", + "messages_read": "Access Messages", + "reporting_read": "Get analytics reports and download report files", + "reporting_write": "Manage/execute analytics reports", + "reviews_read": "Access Reviews", + "reviews_write": "Create, update and delete Reviews", + "users_read": "Access Users", + "user_me_read": "Access information about my user", + "users_manage": "Manage Users", + "webhooks_read": "View webhook subscriptions", + "webhooks_write": "Create new webhook subscription", + "webhooks_delete": "Delete webhook subscription", + "webhooks_manage": "View, create and delete webhook subscriptions" + } + } + } + }, + "oauth2_master": { + "type": "oauth2", + "flows": { + "clientCredentials": { + "tokenUrl": "https://api.smartrecruiters.com/identity/oauth/token", + "scopes": { + "partner_configuration_manage": "Allows modification of global configuration and creation of customer level integrations" + } + } + } + }, + "oauth2": { + "type": "oauth2", + "flows": { + "clientCredentials": { + "tokenUrl": "https://www.partner.com/identity/oauth/token", + "scopes": { + "jobs_read": "Allows reading job details", + "candidates_read": "Allows reading candidate details", + "assessment_result_manage": "Allows managing assessment result", + "packages_view": "Allows reading list of assessment packages", + "orders_manage": "Allows creating orders" + } + } + } + } + }, + "apiBaseUrl": "https://api.smartrecruiters.com/webhooks-api/v201907", + "apiVersion": "201910.4", + "apiDescription": "SmartOnboard Public API", + "apiTitle": "Webhooks", + "endpoints": 164, + "sdkMethods": 317, + "schemas": 373, + "parameters": 528, + "contactUrl": "https://developers.smartrecruiters.com", + "originalCustomRequest": { + "lambda": true + }, + "customRequestSpecFilename": "smartrecruiters.com.yaml", + "difficultyScore": 625, + "difficulty": "Very Hard", + "company": "SmartRecruiters", + "sdkName": "smart-recruiters-{language}-sdk", + "clientName": "SmartRecruiters", + "metaDescription": "SmartRecruiters is a California-based cloud platform that offers solutions including talent sourcing, recruitment and applicant tracking for businesses.", + "apiStatusUrls": "inherit", + "homepage": "smartrecruiters.com", + "developerDocumentation": "developers.smartrecruiters.com/reference", + "categories": [ + "recruiting", + "hr", + "applicant_tracking" + ], + "category": "HR Talent & Recruitment", + "methods": [ + { + "url": "/postings/{uuid}/candidates", + "method": "createNewCandidateApplication", + "httpMethod": "post", + "tag": "Application API", + "typeScriptTag": "applicationApi", + "description": "Create a New Candidate Application", + "parameters": [ + { + "name": "uuid", + "schema": "string", + "required": true, + "description": "Posting UUID", + "example": "UUID" + }, + { + "name": "tags", + "schema": "array", + "required": false, + "description": "" + }, + { + "name": "firstName", + "schema": "string", + "required": true, + "description": "", + "example": "FIRSTNAME" + }, + { + "name": "lastName", + "schema": "string", + "required": true, + "description": "", + "example": "LASTNAME" + }, + { + "name": "email", + "schema": "string", + "required": true, + "description": "", + "example": "EMAIL" + }, + { + "name": "createJoinLink", + "schema": "boolean", + "required": false, + "description": "" + }, + { + "name": "conditionalsIncluded", + "schema": "boolean", + "required": false, + "description": "" + }, + { + "name": "phoneNumber", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "location", + "schema": "object", + "required": false, + "description": "" + }, + { + "name": "web", + "schema": "object", + "required": false, + "description": "" + }, + { + "name": "education", + "schema": "array", + "required": false, + "description": "" + }, + { + "name": "experience", + "schema": "array", + "required": false, + "description": "" + }, + { + "name": "sourceDetails", + "schema": "object", + "required": false, + "description": "" + }, + { + "name": "resume", + "schema": "object", + "required": false, + "description": "" + }, + { + "name": "avatar", + "schema": "object", + "required": false, + "description": "" + }, + { + "name": "attachments", + "schema": "array", + "required": false, + "description": "" + }, + { + "name": "answers", + "schema": "array", + "required": false, + "description": "" + }, + { + "name": "messageToHiringManager", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "consent", + "schema": "boolean", + "required": false, + "description": "" + }, + { + "name": "consentDecisions", + "schema": "object", + "required": false, + "description": "" + }, + { + "name": "internal", + "schema": "boolean", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "429", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/postings/{uuid}/candidates/{candidateId}/status", + "method": "getCandidateStatus", + "httpMethod": "get", + "tag": "Application API", + "typeScriptTag": "applicationApi", + "description": "Get candidate status", + "parameters": [ + { + "name": "uuid", + "schema": "string", + "required": true, + "description": "Posting UUID", + "example": "UUID" + }, + { + "name": "candidateId", + "schema": "string", + "required": true, + "description": "", + "example": "CANDIDATEID" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "429", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/postings/{uuid}/configuration", + "method": "getPostingConfiguration", + "httpMethod": "get", + "tag": "Application API", + "typeScriptTag": "applicationApi", + "description": "Get application configuration for posting", + "parameters": [ + { + "name": "acceptLanguage", + "schema": "string", + "description": "Language for screening questions. By default 'en'." + }, + { + "name": "uuid", + "schema": "string", + "required": true, + "description": "Posting UUID", + "example": "UUID" + }, + { + "name": "conditionalsIncluded", + "schema": "boolean", + "description": "Specifies whether conditional questions should be returned in the response. 'false' if not specified\n- Only available for BETA customers\n" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "429", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/approvals/{approvalRequestId}", + "method": "getById", + "httpMethod": "get", + "tag": "approvals", + "typeScriptTag": "approvals", + "description": "Get approval request by id", + "parameters": [ + { + "name": "approvalRequestId", + "schema": "string", + "required": true, + "description": "Approval request identifier", + "example": "APPROVALREQUESTID" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "Approval request" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/approvals/{approvalRequestId}/comments", + "method": "getComments", + "httpMethod": "get", + "tag": "approvals", + "typeScriptTag": "approvals", + "description": "Get comments for given approval request", + "parameters": [ + { + "name": "approvalRequestId", + "schema": "string", + "required": true, + "description": "Approval request identifier", + "example": "APPROVALREQUESTID" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/approvals/{approvalRequestId}/comments", + "method": "addCommentToRequest", + "httpMethod": "post", + "tag": "approvals", + "typeScriptTag": "approvals", + "description": "Add comment to given approval request", + "parameters": [ + { + "name": "approvalRequestId", + "schema": "string", + "required": true, + "description": "Approval request identifier", + "example": "APPROVALREQUESTID" + }, + { + "name": "content", + "schema": "string", + "required": true, + "description": "", + "example": "CONTENT" + }, + { + "name": "authorId", + "schema": "string", + "required": true, + "description": "", + "example": "AUTHORID" + } + ], + "responses": [ + { + "statusCode": "201", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "422", + "description": "Input validation fails" + } + ] + }, + { + "url": "/approvals", + "method": "getPendingRequests", + "httpMethod": "get", + "tag": "approvals", + "typeScriptTag": "approvals", + "description": "Get pending approvals requests where you are an approver.", + "parameters": [ + { + "name": "pageId", + "schema": "string", + "required": false, + "description": "Identifier for the paged list of approval requests. To get the first page of approval request, leave it blank.\n" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "Approval requests" + }, + { + "statusCode": "400", + "description": "" + } + ] + }, + { + "url": "/approvals", + "method": "createApprovalRequest", + "httpMethod": "post", + "tag": "approvals", + "typeScriptTag": "approvals", + "description": "Create approval request", + "parameters": [ + { + "name": "baseId", + "schema": "string", + "required": true, + "description": "", + "example": "BASEID" + }, + { + "name": "type", + "schema": "string", + "required": true, + "description": "", + "example": "TYPE" + }, + { + "name": "decisionMode", + "schema": "string", + "required": true, + "description": "", + "example": "DECISIONMODE" + }, + { + "name": "steps", + "schema": "array", + "required": true, + "description": "" + } + ], + "responses": [ + { + "statusCode": "201", + "description": "Approval request" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + } + ] + }, + { + "url": "/approvals/{approvalRequestId}/approve-decisions", + "method": "approveDecisions", + "httpMethod": "post", + "tag": "approvals", + "typeScriptTag": "approvals", + "description": "Approve the approval request by id", + "parameters": [ + { + "name": "approvalRequestId", + "schema": "string", + "required": true, + "description": "Approval request identifier", + "example": "APPROVALREQUESTID" + }, + { + "name": "approverId", + "schema": "string", + "required": true, + "description": "", + "example": "APPROVERID" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "Approval request approved" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/approvals/{approvalRequestId}/reject-decisions", + "method": "rejectRequestById", + "httpMethod": "post", + "tag": "approvals", + "typeScriptTag": "approvals", + "description": "Reject the approval request by id", + "parameters": [ + { + "name": "approvalRequestId", + "schema": "string", + "required": true, + "description": "Approval request identifier", + "example": "APPROVALREQUESTID" + }, + { + "name": "approverId", + "schema": "string", + "required": true, + "description": "", + "example": "APPROVERID" + }, + { + "name": "comment", + "schema": "string", + "required": true, + "description": "", + "example": "COMMENT" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "Approval request rejected" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/partner/configuration", + "method": "getDetails", + "httpMethod": "get", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "get partner configuration", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/partner/configuration", + "method": "savePartnerConfig", + "httpMethod": "put", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "saves configuration for partner", + "parameters": [ + { + "name": "consentUrl", + "schema": "string", + "required": true, + "description": "", + "example": "CONSENTURL" + }, + { + "name": "consentDisplayMode", + "schema": "string", + "required": true, + "description": "", + "example": "CONSENTDISPLAYMODE" + }, + { + "name": "assessmentPackageListUrl", + "schema": "string", + "required": true, + "description": "", + "example": "ASSESSMENTPACKAGELISTURL" + }, + { + "name": "singleAssessmentPackageUrl", + "schema": "string", + "required": true, + "description": "", + "example": "SINGLEASSESSMENTPACKAGEURL" + }, + { + "name": "packageOrderUrl", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "inlineAssessmentPackageOrderUrl", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "oauthTokenUrl", + "schema": "string", + "required": true, + "description": "", + "example": "OAUTHTOKENURL" + }, + { + "name": "integrationDisableUrl", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "fields", + "schema": "array", + "required": false, + "description": "" + }, + { + "name": "supportedAssessmentTypes", + "schema": "array", + "required": true, + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + } + ] + }, + { + "url": "/integration/company/{companyId}", + "method": "integrationSetup", + "httpMethod": "post", + "tag": "integration", + "typeScriptTag": "integration", + "description": "enable the company integration", + "parameters": [ + { + "name": "companyId", + "schema": "string", + "required": true, + "description": "", + "example": "COMPANYID" + }, + { + "name": "clientId", + "schema": "string", + "required": true, + "description": "", + "example": "CLIENTID" + }, + { + "name": "clientSecret", + "schema": "string", + "required": true, + "description": "", + "example": "CLIENTSECRET" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "409", + "description": "" + } + ] + }, + { + "url": "/orders/{orderId}/results", + "method": "updatePackageResult", + "httpMethod": "patch", + "tag": "result", + "typeScriptTag": "result", + "description": "updates package result", + "parameters": [ + { + "name": "orderId", + "schema": "string", + "required": true, + "description": "Order ID", + "example": "ORDERID" + }, + { + "name": "summary", + "schema": "string", + "description": "" + }, + { + "name": "description", + "schema": "string", + "description": "" + }, + { + "name": "assessmentPackageDate", + "schema": "string", + "description": "" + }, + { + "name": "submissionDate", + "schema": "string", + "description": "" + }, + { + "name": "name", + "schema": "string", + "description": "" + }, + { + "name": "status", + "schema": "string", + "description": "" + }, + { + "name": "score", + "schema": "object", + "description": "", + "example": "{raw:28, min:20, max:80} gives a normalized 13% or label '28/80' (min is not presented in label)" + }, + { + "name": "scoreLabel", + "schema": "string", + "description": "" + }, + { + "name": "attachments", + "schema": "array", + "description": "" + }, + { + "name": "assessmentResults", + "schema": "array", + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "415", + "description": "" + } + ] + }, + { + "url": "/orders/{orderId}/results/attachment", + "method": "addAttachmentToOrder", + "httpMethod": "post", + "tag": "result", + "typeScriptTag": "result", + "description": "add attachment to order", + "parameters": [ + { + "name": "orderId", + "schema": "string", + "required": true, + "description": "Order ID", + "example": "ORDERID" + } + ], + "responses": [ + { + "statusCode": "201", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/integration", + "method": "showConsentFormOnPartnerSide", + "httpMethod": "get", + "tag": "integration", + "typeScriptTag": "integration", + "description": "Shows consent form on partner side", + "parameters": [ + { + "name": "companyId", + "schema": "string", + "description": "id of company setting up the integration" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + } + ] + }, + { + "url": "/integrations/companies/{companyId}", + "method": "removeIntegrationOnPartnerSide", + "httpMethod": "delete", + "tag": "integration", + "typeScriptTag": "integration", + "description": "Removes integration on partner side", + "parameters": [ + { + "name": "companyId", + "schema": "string", + "required": true, + "description": "id of company with integration", + "example": "COMPANYID" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "" + } + ] + }, + { + "url": "/packages", + "method": "getList", + "httpMethod": "get", + "tag": "packages", + "typeScriptTag": "packages", + "description": "Retrieves a list of packages", + "parameters": [ + { + "name": "requester", + "schema": "object", + "required": false, + "description": "Information about recruiter requesting list of packages" + }, + { + "name": "countryCode", + "schema": "string", + "required": false, + "description": "country code" + }, + { + "name": "regionAbbr", + "schema": "string", + "required": false, + "description": "region abbreviation" + }, + { + "name": "city", + "schema": "string", + "required": false, + "description": "city" + }, + { + "name": "address", + "schema": "string", + "required": false, + "description": "address" + }, + { + "name": "postalCode", + "schema": "string", + "required": false, + "description": "postal code" + }, + { + "name": "remote", + "schema": "boolean", + "required": false, + "description": "describe whether job is remote or not" + }, + { + "name": "partnerFieldId", + "schema": "string", + "required": false, + "description": "Example partner field. Partner defines list of allowed fields in configuration. Client binds job fields in his configuration. All fields with non-empty values will be included in this call." + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "204", + "description": "Returned when there are not packages to present" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + } + ] + }, + { + "url": "/packages/{assessmentPackageId}", + "method": "getById", + "httpMethod": "get", + "tag": "packages", + "typeScriptTag": "packages", + "description": "Retrieves a package by id", + "parameters": [ + { + "name": "assessmentPackageId", + "schema": "string", + "required": true, + "description": "", + "example": "ASSESSMENTPACKAGEID" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/packages/orders", + "method": "assessPackageForCandidate", + "httpMethod": "post", + "tag": "orders", + "typeScriptTag": "orders", + "description": "Orders assessment package for candidate", + "parameters": [ + { + "name": "resultCallbackURL", + "schema": "string", + "required": true, + "description": "", + "example": "RESULTCALLBACKURL" + }, + { + "name": "candidate", + "schema": "object", + "required": true, + "description": "" + }, + { + "name": "job", + "schema": "object", + "required": true, + "description": "" + }, + { + "name": "requester", + "schema": "object", + "required": false, + "description": "" + }, + { + "name": "assessmentPackageId", + "schema": "string", + "required": true, + "description": "", + "example": "ASSESSMENTPACKAGEID" + }, + { + "name": "jobId", + "schema": "string", + "required": true, + "description": "", + "example": "JOBID" + }, + { + "name": "companyId", + "schema": "string", + "required": true, + "description": "", + "example": "COMPANYID" + }, + { + "name": "fields", + "schema": "object", + "required": false, + "description": "", + "example": { + "partner-field-id": "partner-field-value" + } + } + ], + "responses": [ + { + "statusCode": "202", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/packages/inline/orders", + "method": "assessPackageForCandidate", + "httpMethod": "post", + "tag": "orders", + "typeScriptTag": "orders", + "description": "Orders inline assessment package for candidate", + "parameters": [ + { + "name": "resultCallbackURL", + "schema": "string", + "required": true, + "description": "", + "example": "RESULTCALLBACKURL" + }, + { + "name": "candidate", + "schema": "object", + "required": true, + "description": "" + }, + { + "name": "job", + "schema": "object", + "required": true, + "description": "" + }, + { + "name": "assessmentPackageId", + "schema": "string", + "required": true, + "description": "", + "example": "ASSESSMENTPACKAGEID" + }, + { + "name": "jobId", + "schema": "string", + "required": true, + "description": "", + "example": "JOBID" + }, + { + "name": "companyId", + "schema": "string", + "required": true, + "description": "", + "example": "COMPANYID" + }, + { + "name": "completedAssessmentCallbackUrl", + "schema": "string", + "required": true, + "description": "", + "example": "COMPLETEDASSESSMENTCALLBACKURL" + }, + { + "name": "fields", + "schema": "object", + "required": false, + "description": "", + "example": { + "partner-field-id": "partner-field-value" + } + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/oauth/token", + "method": "exchangeCredentialsForAccessToken", + "httpMethod": "post", + "tag": "token", + "typeScriptTag": "token", + "description": "Exchange credentials for an access token", + "parameters": [ + { + "name": "grant_type", + "schema": "string", + "required": true, + "description": "", + "example": "GRANT_TYPE" + }, + { + "name": "client_id", + "schema": "string", + "required": true, + "description": "", + "example": "CLIENT_ID" + }, + { + "name": "client_secret", + "schema": "string", + "required": true, + "description": "", + "example": "CLIENT_SECRET" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + } + ] + }, + { + "url": "/assessment-orders", + "method": "getAllForApplication", + "httpMethod": "get", + "tag": "assessment orders", + "typeScriptTag": "assessmentOrders", + "description": "Retrieves all assessment orders for specified application", + "parameters": [ + { + "name": "applicationId", + "schema": "string", + "required": true, + "description": "ID of the application", + "example": "APPLICATIONID" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/audit-events", + "method": "listEvents", + "httpMethod": "get", + "tag": "audit", + "typeScriptTag": "audit", + "description": "List audit events", + "parameters": [ + { + "name": "eventDateAfter", + "schema": "string", + "description": "ISO8601-formatted time boundaries for the event time, Format: yyyy-MM-ddTHH:mm:ss.SSSZZ (example: 2023-01-21T12:50:02.594Z)" + }, + { + "name": "eventDateBefore", + "schema": "string", + "description": "ISO8601-formatted time boundaries for the event time, Format: yyyy-MM-ddTHH:mm:ss.SSSZZ (example: 2023-01-21T12:50:02.594Z)" + }, + { + "name": "eventName", + "schema": "array", + "description": "Name of the event", + "default": [ + "USER_ACCOUNT_ACTIVATED", + "USER_ACCOUNT_CREATED", + "USER_ACCOUNT_DEACTIVATED", + "USER_ACCOUNT_UPDATED", + "USER_AUTHENTICATION_INVALID_CREDENTIALS", + "USER_AUTHENTICATION_SUCCESS", + "USER_PASSWORD_CHANGED", + "USER_PASSWORD_RESET", + "USER_ROLE_CHANGED", + "USER_API_KEY_RENEWED", + "CREDENTIALS_CREATED", + "CREDENTIALS_CHANGED", + "CREDENTIALS_REVOKED", + "SEARCH", + "JOB_DELETED", + "HIRING_TEAM_MEMBER_ADDED", + "HIRING_TEAM_MEMBER_REMOVED", + "HIRING_TEAM_ROLE_UPDATED", + "APPROVAL_DELEGATION_FROM_USER_CREATED", + "APPROVAL_DELEGATION_FROM_USER_CANCELLED", + "APPROVAL_DELEGATION_TO_USER_CREATED", + "APPROVAL_DELEGATION_TO_USER_CANCELLED", + "JOB_APPROVAL_REQUESTED", + "JOB_APPROVAL_APPROVED", + "JOB_APPROVAL_REJECTED", + "JOB_APPROVAL_ABANDONED", + "JOB_APPROVAL_STEP_APPROVED", + "JOB_APPROVAL_STEP_REJECTED", + "JOB_APPROVAL_STEP_SKIPPED", + "JOB_APPROVAL_STEP_DELEGATED", + "OFFER_APPROVAL_APPROVED", + "OFFER_APPROVAL_REJECTED", + "OFFER_APPROVAL_ABANDONED", + "OFFER_APPROVAL_STEP_APPROVED", + "OFFER_APPROVAL_STEP_REJECTED", + "OFFER_APPROVAL_STEP_SKIPPED", + "OFFER_APPROVAL_STEP_DELEGATED", + "OFFER_ACCEPTED", + "OFFER_DECLINED", + "CANDIDATE_PERSONAL_DATA_MODIFIED", + "CANDIDATE_PROFILE_MODIFIED", + "CANDIDATE_DELETED", + "CANDIDATE_PROFILE_OPENED", + "CANDIDATE_EEO_FILLED", + "CANDIDATE_PROFILE_UPDATED_DUE_TO_MERGE", + "CANDIDATE_DELETED_DUE_TO_MERGE", + "CANDIDATE_TAGS_MODIFIED", + "APPLICATION_PROPERTIES_UPDATED", + "APPLICATION_SOURCE_MODIFIED", + "ONBOARDING_STATUS_UPDATED", + "JOB_APPLICATION_CREATED", + "JOB_APPLICATION_STATE_MODIFIED", + "LRSC_CONSENT_GIVEN", + "OAUTH_APPLICATION_ACCESS_GRANTED", + "JOB_PROPERTY_CREATED", + "JOB_PROPERTY_UPDATED", + "JOB_PROPERTY_ACTIVATED", + "JOB_PROPERTY_DEACTIVATED", + "JOB_PROPERTY_UPDATED_VALUES", + "JOB_PROPERTY_UPDATED_VALUE", + "JOB_PROPERTY_ADDED_VALUE", + "JOB_PROPERTY_ARCHIVED_VALUE", + "JOB_PROPERTY_DEPENDENT_PROPERTIES_UPDATED", + "JOB_PROPERTY_DEPENDENT_VALUES_UPDATED", + "JOB_PROPERTIES_CHANGED", + "POSITION_UPDATED", + "POSITION_DELETED", + "POSITION_CREATED", + "POSITION_ASSIGNED", + "CANCEL_NOT_FILLED_POSITION", + "JOB_AD_CREATED", + "JOB_AD_UPDATED", + "JOB_AD_DELETED", + "ONBOARDING_PROCESS_DELETED", + "CUSTOMER_REPORT_DOWNLOADED" + ] + }, + { + "name": "authorType", + "schema": "array", + "description": "Type of the author who generated the event", + "default": [ + "USER", + "SUPPORT_USER", + "SYSTEM", + "CANDIDATE" + ] + }, + { + "name": "authorId", + "schema": "string", + "description": "Unique identifier of the author" + }, + { + "name": "entityType", + "schema": "array", + "description": "Type of the entity that the event is related to", + "default": [ + "USER", + "CANDIDATE", + "APPLICATION", + "OFFER", + "JOB", + "COMPANY", + "JOB_PROPERTY", + "JOB_AD", + "CREDENTIAL", + "REPORT_FILE", + "ONBOARDING_PROCESS" + ] + }, + { + "name": "entityId", + "schema": "string", + "description": "Unique identifier of the entity that the event is related to" + }, + { + "name": "nextPageId", + "schema": "string", + "description": "Unique identifier for the next page of events" + }, + { + "name": "limit", + "schema": "integer", + "description": "Number of audit events to return. Maximum value is 100.", + "default": 10 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "403", + "description": "" + } + ] + }, + { + "url": "/candidates/{id}/tags", + "method": "removeTags", + "httpMethod": "delete", + "tag": "candidates", + "typeScriptTag": "candidates", + "description": "Delete tags for a candidate", + "parameters": [], + "responses": [ + { + "statusCode": "204", + "description": "Candidate's tags successfully deleted" + }, + { + "statusCode": "403", + "description": "" + } + ] + }, + { + "url": "/candidates/{id}/tags", + "method": "getTags", + "httpMethod": "get", + "tag": "candidates", + "typeScriptTag": "candidates", + "description": "Get tags for a candidate", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "403", + "description": "" + } + ] + }, + { + "url": "/candidates/{id}/tags", + "method": "addTagsToCandidate", + "httpMethod": "post", + "tag": "candidates", + "typeScriptTag": "candidates", + "description": "Add tags to a candidate", + "parameters": [ + { + "name": "tags", + "schema": "array", + "required": true, + "description": "" + } + ], + "responses": [ + { + "statusCode": "201", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "403", + "description": "" + } + ] + }, + { + "url": "/candidates/{id}/tags", + "method": "updateCandidateTags", + "httpMethod": "put", + "tag": "candidates", + "typeScriptTag": "candidates", + "description": "Update tags for a candidate", + "parameters": [ + { + "name": "tags", + "schema": "array", + "required": true, + "description": "" + } + ], + "responses": [ + { + "statusCode": "201", + "description": "" + }, + { + "statusCode": "403", + "description": "" + } + ] + }, + { + "url": "/candidates/{id}/onboardingStatus", + "method": "getOnboardingStatus", + "httpMethod": "get", + "tag": "candidates", + "typeScriptTag": "candidates", + "description": "Get Onboarding Status for a candidate", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/candidates/{id}/onboardingStatus", + "method": "setOnboardingStatus", + "httpMethod": "put", + "tag": "candidates", + "typeScriptTag": "candidates", + "description": "Set Onboarding Status for a candidate", + "parameters": [ + { + "name": "onboardingStatus", + "schema": "string", + "required": true, + "description": "", + "example": "ONBOARDINGSTATUS" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "Onboarding status successfully updated." + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/candidates/{id}/jobs/{jobId}/onboardingStatus", + "method": "getOnboardingStatus", + "httpMethod": "get", + "tag": "candidates", + "typeScriptTag": "candidates", + "description": "Get Onboarding Status for a candidate associated with given job", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/candidates/{id}/jobs/{jobId}/onboardingStatus", + "method": "setOnboardingStatus", + "httpMethod": "put", + "tag": "candidates", + "typeScriptTag": "candidates", + "description": "Sets Onboarding Status for a candidate associated with given job", + "parameters": [ + { + "name": "onboardingStatus", + "schema": "string", + "required": true, + "description": "", + "example": "ONBOARDINGSTATUS" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "Onboarding status successfully updated." + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/candidates", + "method": "searchResults", + "httpMethod": "get", + "tag": "candidates", + "typeScriptTag": "candidates", + "description": "Search candidates", + "parameters": [ + { + "name": "q", + "schema": "string", + "description": "keyword search, for more infromation see [SmartRecruiters HelpCenter](https://help.smartrecruiters.com/Getting_Started/Platform/Searching_candidates_via_Candidate_API)" + }, + { + "name": "limit", + "schema": "integer", + "description": "number of elements to return. max value is 100", + "default": 10 + }, + { + "name": "pageId", + "schema": "string", + "description": "page identifier of elements to return\n\nThe `pageId` param can be used to fetch multiple page response, in case\nthe number of results is higher than max number of elements to return (specified in the `limit` parameter).\nThe `pageId` should not be present when requesting the first page of results.\nThe pageId of the following page is returned either in the `nextPageId` property, or is available\nin the HTTP header `Link` value of relation type `next`.\nExample of the `Link` header:\n```\n; rel=\"next\"\n```\n" + }, + { + "name": "jobId", + "schema": "array", + "description": "job filter to display candidates who applied for a job [id]; can be used repeatedly;" + }, + { + "name": "location", + "schema": "array", + "description": "location keyword search which looks up a string in a candidate’s location data; can be used repeatedly; case insensitive; e.g. Krakow" + }, + { + "name": "averageRating", + "schema": "array", + "description": "average rating filter to display candidates with a specific average rating (https://developers.smartrecruiters.com/reference; can be used repeatedly; e.g. 4" + }, + { + "name": "status", + "schema": "array", + "description": "candidate’s status filter in a context of a job; can be used repeatedly" + }, + { + "name": "consentStatus", + "schema": "array", + "description": "candidate’s consent status filter; can be used repeatedly" + }, + { + "name": "subStatus", + "schema": "string", + "description": "candidate’s sub-status filter in a context of a job. Works only in a correlation with a set value for the \"status\" field." + }, + { + "name": "tag", + "schema": "array", + "description": "tag assigned to a candidate; can be used repeatedly; case insensitive; e.g. fluent english" + }, + { + "name": "updatedAfter", + "schema": "string", + "description": "ISO8601-formatted time boundaries for the candidate update time, Format: yyyy-MM-ddTHH:mm:ss.SSSZZ" + }, + { + "name": "onboardingStatus", + "schema": "string", + "description": "candidate's onboarding status" + }, + { + "name": "propertyId", + "schema": "array", + "description": "candidate's property id (https://developers.smartrecruiters.com/reference. Currently it is only possible to filter by single-select application fields. Other application field type filtering is not possible.", + "default": [] + }, + { + "name": "propertyValueId", + "schema": "array", + "description": "candidate's property value id (https://developers.smartrecruiters.com/reference", + "default": [] + }, + { + "name": "sourceType", + "schema": "array", + "description": "candidate's source type (https://developers.smartrecruiters.com/reference", + "default": [] + }, + { + "name": "sourceSubType", + "schema": "array", + "description": "candidate's source subtype (https://developers.smartrecruiters.com/reference", + "default": [] + }, + { + "name": "sourceValueId", + "schema": "array", + "description": "candidate's source value id (https://developers.smartrecruiters.com/reference", + "default": [] + }, + { + "name": "questionCategory", + "schema": "array", + "description": "screening question category (https://developers.smartrecruiters.com/reference", + "default": [] + }, + { + "name": "questionFieldId", + "schema": "array", + "description": "screening question field id (https://developers.smartrecruiters.com/reference", + "default": [] + }, + { + "name": "questionFieldValueId", + "schema": "array", + "description": "screening question field value id (https://developers.smartrecruiters.com/reference", + "default": [] + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + } + ] + }, + { + "url": "/candidates", + "method": "createWithSourceDetails", + "httpMethod": "post", + "tag": "candidates", + "typeScriptTag": "candidates", + "description": "Create a new candidate and assign to a Talent Pool", + "parameters": [ + { + "name": "tags", + "schema": "array", + "required": false, + "description": "" + }, + { + "name": "firstName", + "schema": "string", + "required": true, + "description": "", + "example": "FIRSTNAME" + }, + { + "name": "lastName", + "schema": "string", + "required": true, + "description": "", + "example": "LASTNAME" + }, + { + "name": "email", + "schema": "string", + "required": true, + "description": "", + "example": "EMAIL" + }, + { + "name": "phoneNumber", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "location", + "schema": "object", + "required": false, + "description": "" + }, + { + "name": "web", + "schema": "object", + "required": false, + "description": "" + }, + { + "name": "education", + "schema": "array", + "required": false, + "description": "", + "default": [] + }, + { + "name": "experience", + "schema": "array", + "required": false, + "description": "", + "default": [] + }, + { + "name": "sourceDetails", + "schema": "object", + "required": false, + "description": "" + }, + { + "name": "internal", + "schema": "boolean", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "201", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/candidates/cv", + "method": "parseResumeAndAssignToTalentPool", + "httpMethod": "post", + "tag": "candidates", + "typeScriptTag": "candidates", + "description": "Parse a resume, create a candidate and assign to a Talent Pool.", + "parameters": [ + { + "name": "sourceTypeId", + "schema": "string", + "description": "" + }, + { + "name": "sourceSubTypeId", + "schema": "string", + "description": "" + }, + { + "name": "sourceId", + "schema": "string", + "description": "" + }, + { + "name": "internal", + "schema": "boolean", + "description": "" + }, + { + "name": "file", + "schema": "string", + "description": "" + } + ], + "responses": [ + { + "statusCode": "201", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/candidates/consent-requests", + "method": "requestConsentFromMultiple", + "httpMethod": "post", + "tag": "candidates", + "typeScriptTag": "candidates", + "description": "Request consent from multiple candidates", + "parameters": [ + { + "name": "content", + "schema": "array", + "required": true, + "description": "" + } + ], + "responses": [ + { + "statusCode": "201", + "description": "" + } + ] + }, + { + "url": "/candidates/{id}/consent", + "method": "getStatusOfConsent", + "httpMethod": "get", + "tag": "candidates", + "typeScriptTag": "candidates", + "description": "Status of candidate consent", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "403", + "description": "" + } + ] + }, + { + "url": "/candidates/{id}/consents", + "method": "getConsentDecisions", + "httpMethod": "get", + "tag": "candidates", + "typeScriptTag": "candidates", + "description": "Candidate consent decisions", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "403", + "description": "" + } + ] + }, + { + "url": "/candidates/{id}", + "method": "removeCandidateById", + "httpMethod": "delete", + "tag": "candidates", + "typeScriptTag": "candidates", + "description": "Delete Candidate", + "parameters": [], + "responses": [ + { + "statusCode": "204", + "description": "Candidate successfully deleted" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/candidates/{id}", + "method": "getDetails", + "httpMethod": "get", + "tag": "candidates", + "typeScriptTag": "candidates", + "description": "Get details of a candidate", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + } + ] + }, + { + "url": "/candidates/{id}", + "method": "updatePersonalInfo", + "httpMethod": "patch", + "tag": "candidates", + "typeScriptTag": "candidates", + "description": "Update candidate personal information", + "parameters": [ + { + "name": "firstName", + "schema": "string", + "description": "" + }, + { + "name": "lastName", + "schema": "string", + "description": "" + }, + { + "name": "email", + "schema": "string", + "description": "" + }, + { + "name": "phoneNumber", + "schema": "string", + "description": "" + }, + { + "name": "location", + "schema": "object", + "description": "" + }, + { + "name": "web", + "schema": "object", + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/candidates/{id}/attachments", + "method": "listAttachments", + "httpMethod": "get", + "tag": "candidates", + "typeScriptTag": "candidates", + "description": "Get list candidate's attachments.", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + } + ] + }, + { + "url": "/candidates/{id}/attachments", + "method": "attachFiles", + "httpMethod": "post", + "tag": "candidates", + "typeScriptTag": "candidates", + "description": "Attach files to a candidate.", + "parameters": [ + { + "name": "attachmentType", + "schema": "string", + "required": true, + "description": "", + "example": "ATTACHMENTTYPE", + "default": "GENERIC_FILE" + }, + { + "name": "file", + "schema": "string", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "201", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "422", + "description": "" + } + ] + }, + { + "url": "/candidates/{id}/attachments/{attachmentId}", + "method": "getAttachmentById", + "httpMethod": "get", + "tag": "candidates", + "typeScriptTag": "candidates", + "description": "Get a candidate's attachment.", + "parameters": [ + { + "name": "attachmentId", + "schema": "string", + "required": true, + "description": "Identifier of an attachment", + "example": "ATTACHMENTID" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "Attachment content" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/candidates/{id}/jobs/{jobId}/attachments", + "method": "getAttachmentsByJobId", + "httpMethod": "get", + "tag": "candidates", + "typeScriptTag": "candidates", + "description": "Get list of candidate's attachments in context of given job.", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/candidates/{id}/jobs/{jobId}/attachments", + "method": "attachFileToJobCandidate", + "httpMethod": "post", + "tag": "candidates", + "typeScriptTag": "candidates", + "description": "Attach file to candidate in context of given job.", + "parameters": [ + { + "name": "attachmentType", + "schema": "string", + "required": true, + "description": "", + "example": "ATTACHMENTTYPE", + "default": "GENERIC_FILE" + }, + { + "name": "file", + "schema": "string", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "201", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "422", + "description": "" + } + ] + }, + { + "url": "/candidates/attachments/{attachmentId}", + "method": "deleteAttachment", + "httpMethod": "delete", + "tag": "candidates", + "typeScriptTag": "candidates", + "description": "Delete attachment.", + "parameters": [], + "responses": [ + { + "statusCode": "204", + "description": "Attachment successfully deleted" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/candidates/attachments/{attachmentId}", + "method": "getAttachment", + "httpMethod": "get", + "tag": "candidates", + "typeScriptTag": "candidates", + "description": "Get candidate's attachment.", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "Candidate's Attachment" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/candidates/{id}/jobs/{jobId}/status", + "method": "updateStatus", + "httpMethod": "put", + "tag": "candidates", + "typeScriptTag": "candidates", + "description": "Update a candidate's status", + "parameters": [ + { + "name": "status", + "schema": "string", + "required": true, + "description": "", + "example": "STATUS" + }, + { + "name": "subStatus", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "startsOn", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "reason", + "schema": "string", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/candidates/{id}/status", + "method": "updateStatusOnPrimaryAssignment", + "httpMethod": "put", + "tag": "candidates", + "typeScriptTag": "candidates", + "description": "Update a candidate's status on primary assignment", + "parameters": [ + { + "name": "status", + "schema": "string", + "required": true, + "description": "", + "example": "STATUS" + }, + { + "name": "subStatus", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "startsOn", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "reason", + "schema": "string", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + } + ] + }, + { + "url": "/candidates/{id}/status/history", + "method": "getStatusHistory", + "httpMethod": "get", + "tag": "candidates", + "typeScriptTag": "candidates", + "description": "Get candidate's status history", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + } + ] + }, + { + "url": "/candidates/{id}/jobs/{jobId}/status/history", + "method": "getStatusHistory", + "httpMethod": "get", + "tag": "candidates", + "typeScriptTag": "candidates", + "description": "Get candidate's status history for a candidate's job", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/candidates/{id}/jobs/{jobId}/source", + "method": "updateSource", + "httpMethod": "put", + "tag": "candidates", + "typeScriptTag": "candidates", + "description": "Update a candidate's source", + "parameters": [ + { + "name": "sourceTypeId", + "schema": "string", + "required": true, + "description": "", + "example": "SOURCETYPEID" + }, + { + "name": "sourceSubTypeId", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "sourceId", + "schema": "string", + "required": true, + "description": "", + "example": "SOURCEID" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/candidates/{id}/properties", + "method": "getPropertyValues", + "httpMethod": "get", + "tag": "candidates", + "typeScriptTag": "candidates", + "description": "Get candidate property values for a candidate", + "parameters": [ + { + "name": "context", + "schema": "string", + "description": "context for candidate properties to display" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/candidates/{id}/jobs/{jobId}/properties", + "method": "getPropertyValuesForJob", + "httpMethod": "get", + "tag": "candidates", + "typeScriptTag": "candidates", + "description": "Get candidate property values for a candidate's job", + "parameters": [ + { + "name": "context", + "schema": "string", + "description": "context for candidate properties to display" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/candidates/{id}/jobs/{jobId}/properties", + "method": "updateCandidateProperties", + "httpMethod": "put", + "tag": "candidates", + "typeScriptTag": "candidates", + "description": "Add/update candidate properties values", + "parameters": [], + "responses": [ + { + "statusCode": "204", + "description": "Properties successfully updated." + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/candidates/{id}/properties/{propertyId}", + "method": "updatePropertyValue", + "httpMethod": "put", + "tag": "candidates", + "typeScriptTag": "candidates", + "description": "Add/update candidate property value", + "parameters": [ + { + "name": "propertyId", + "schema": "string", + "required": true, + "description": "Identifier of a Candidate Property", + "example": "PROPERTYID" + }, + { + "name": "value", + "schema": "undefined", + "description": "" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "Property successfully updated." + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/candidates/{id}/jobs/{jobId}/properties/{propertyId}", + "method": "updatePropertyValue", + "httpMethod": "put", + "tag": "candidates", + "typeScriptTag": "candidates", + "description": "Add/update candidate property value", + "parameters": [ + { + "name": "propertyId", + "schema": "string", + "required": true, + "description": "Identifier of a Candidate Property", + "example": "PROPERTYID" + }, + { + "name": "value", + "schema": "undefined", + "description": "" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "Property successfully updated." + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/candidates/{id}/jobs/{jobId}/screening-answers", + "method": "getScreeningAnswersByJob", + "httpMethod": "get", + "tag": "candidates", + "typeScriptTag": "candidates", + "description": "Get candidate screening answers for a candidate's job", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/jobs/{jobId}/candidates", + "method": "createWithSource", + "httpMethod": "post", + "tag": "candidates", + "typeScriptTag": "candidates", + "description": "Create a new candidate and assign to a job", + "parameters": [ + { + "name": "tags", + "schema": "array", + "required": false, + "description": "" + }, + { + "name": "firstName", + "schema": "string", + "required": true, + "description": "", + "example": "FIRSTNAME" + }, + { + "name": "lastName", + "schema": "string", + "required": true, + "description": "", + "example": "LASTNAME" + }, + { + "name": "email", + "schema": "string", + "required": true, + "description": "", + "example": "EMAIL" + }, + { + "name": "phoneNumber", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "location", + "schema": "object", + "required": false, + "description": "" + }, + { + "name": "web", + "schema": "object", + "required": false, + "description": "" + }, + { + "name": "education", + "schema": "array", + "required": false, + "description": "", + "default": [] + }, + { + "name": "experience", + "schema": "array", + "required": false, + "description": "", + "default": [] + }, + { + "name": "sourceDetails", + "schema": "object", + "required": false, + "description": "" + }, + { + "name": "internal", + "schema": "boolean", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "201", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/jobs/{jobId}/candidates/cv", + "method": "parseResumeAndAssignToJob", + "httpMethod": "post", + "tag": "candidates", + "typeScriptTag": "candidates", + "description": "Parse a resume, create a candidate and assign to a job.", + "parameters": [ + { + "name": "sourceTypeId", + "schema": "string", + "description": "" + }, + { + "name": "sourceSubTypeId", + "schema": "string", + "description": "" + }, + { + "name": "sourceId", + "schema": "string", + "description": "" + }, + { + "name": "internal", + "schema": "boolean", + "description": "" + }, + { + "name": "file", + "schema": "string", + "description": "" + } + ], + "responses": [ + { + "statusCode": "201", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/candidates/{id}/jobs/{jobId}", + "method": "getApplicationDetails", + "httpMethod": "get", + "tag": "candidates", + "typeScriptTag": "candidates", + "description": "Get details of a candidate's application to a job", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/configuration/company", + "method": "getCompanyInformation", + "httpMethod": "get", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "Get company information", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + } + ] + }, + { + "url": "/configuration/job-properties", + "method": "getAvailableProperties", + "httpMethod": "get", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "Get a list of available job properties", + "parameters": [ + { + "name": "acceptLanguage", + "schema": "string", + "required": false, + "description": "language of returned content", + "default": "en" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "403", + "description": "" + } + ] + }, + { + "url": "/configuration/job-properties", + "method": "createJobProperty", + "httpMethod": "post", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "Create a job property", + "parameters": [ + { + "name": "label", + "schema": "string", + "required": true, + "description": "", + "example": "LABEL" + }, + { + "name": "category", + "schema": "string", + "required": true, + "description": "", + "example": "CATEGORY" + }, + { + "name": "active", + "schema": "boolean", + "required": false, + "description": "" + }, + { + "name": "visible", + "schema": "boolean", + "required": true, + "description": "", + "example": true + }, + { + "name": "required", + "schema": "boolean", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "201", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "422", + "description": "With codes:\n* *JOB_PROPERTY_LIMIT_EXCEEDED* when job properties limit is reached,\n* *DEFINITION_NAME_IS_NOT_ALLOWED* when job property name is restricted.\n" + } + ] + }, + { + "url": "/configuration/job-properties/{id}", + "method": "getPropertyById", + "httpMethod": "get", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "Get job property by id", + "parameters": [ + { + "name": "acceptLanguage", + "schema": "string", + "required": false, + "description": "language of returned content", + "default": "en" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/configuration/job-properties/{id}", + "method": "updateJobProperty", + "httpMethod": "patch", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "Update a job property", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "422", + "description": "With code:\n* *DEFINITION_NAME_IS_NOT_ALLOWED* when job property name is restricted.\n" + } + ] + }, + { + "url": "/configuration/job-properties/{id}/translations", + "method": "addJobPropertyTranslations", + "httpMethod": "patch", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "Add a job property's translations", + "parameters": [], + "responses": [ + { + "statusCode": "204", + "description": "Translations accepted" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "409", + "description": "" + }, + { + "statusCode": "422", + "description": "Invalid input: missing required data, invalid format" + } + ] + }, + { + "url": "/configuration/job-properties/{id}/values", + "method": "getJobPropertyValues", + "httpMethod": "get", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "Get available job property values", + "parameters": [ + { + "name": "acceptLanguage", + "schema": "string", + "required": false, + "description": "language of returned content", + "default": "en" + }, + { + "name": "pageId", + "schema": "string", + "required": false, + "description": "identifier of the next page of subscriptions" + }, + { + "name": "pageSize", + "schema": "integer", + "required": false, + "description": "pageSize" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/configuration/job-properties/{id}/values", + "method": "createJobPropertyValue", + "httpMethod": "post", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "Create a job property value", + "parameters": [ + { + "name": "id", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "label", + "schema": "string", + "required": true, + "description": "", + "example": "LABEL" + }, + { + "name": "archived", + "schema": "boolean", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "201", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "409", + "description": "" + }, + { + "statusCode": "422", + "description": "" + } + ] + }, + { + "url": "/configuration/job-properties/{id}/values/{valueId}", + "method": "archiveJobPropertyValue", + "httpMethod": "delete", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "Archive a job property value", + "parameters": [], + "responses": [ + { + "statusCode": "204", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/configuration/job-properties/{id}/values/{valueId}", + "method": "updateJobPropertyValue", + "httpMethod": "patch", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "Update a job property value", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "409", + "description": "" + }, + { + "statusCode": "422", + "description": "with input validation fails or with codes:\n* *ACTIVE_VALUES_LIMIT_REACHED* when limit of active job property values is reached.\n* *JSON_PATCH_INVALID* when patch json is invalid.\n* *VALUE_LABEL_IS_BLANK* when provided label is blank\n* *VALUE_LABEL_IS_INVALID* when provided label is not valid, e.g. contains leading/trailing whitespaces\n" + } + ] + }, + { + "url": "/configuration/job-properties/{id}/values/{valueId}", + "method": "unarchiveJobPropertyValue", + "httpMethod": "put", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "Unarchive a job property value", + "parameters": [], + "responses": [ + { + "statusCode": "204", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "422", + "description": "" + } + ] + }, + { + "url": "/configuration/job-properties/{id}/values/{valueId}/translations", + "method": "addJobPropertyValueTranslations", + "httpMethod": "patch", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "Add a job property value's translations", + "parameters": [], + "responses": [ + { + "statusCode": "204", + "description": "Translations accepted" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "409", + "description": "" + }, + { + "statusCode": "422", + "description": "Invalid input: missing required data, invalid format" + } + ] + }, + { + "url": "/configuration/job-properties/{id}/archive-values/{valueId}", + "method": "unarchiveJobPropertyValue", + "httpMethod": "delete", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "Unarchive a job property value", + "parameters": [], + "responses": [ + { + "statusCode": "204", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "422", + "description": "" + } + ] + }, + { + "url": "/configuration/job-properties/{id}/archive-values/{valueId}", + "method": "archiveJobPropertyValue", + "httpMethod": "put", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "Archive a job property value", + "parameters": [], + "responses": [ + { + "statusCode": "204", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/configuration/job-properties/{id}/activation", + "method": "deactivateJobProperty", + "httpMethod": "delete", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "Deactivate a job property", + "parameters": [], + "responses": [ + { + "statusCode": "204", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/configuration/job-properties/{id}/activation", + "method": "activateJobProperty", + "httpMethod": "put", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "Activate a job property", + "parameters": [], + "responses": [ + { + "statusCode": "204", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "409", + "description": "" + } + ] + }, + { + "url": "/configuration/job-properties/{id}/dependents", + "method": "getJobPropertyDependents", + "httpMethod": "get", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "Get job property's dependents", + "parameters": [ + { + "name": "acceptLanguage", + "schema": "string", + "required": false, + "description": "language of returned content", + "default": "en" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/configuration/job-properties/{id}/dependents", + "method": "createJobPropertyDependents", + "httpMethod": "post", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "Create job property dependents", + "parameters": [ + { + "name": "ids", + "schema": "array", + "required": true, + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "422", + "description": "when input validation fails" + } + ] + }, + { + "url": "/configuration/job-properties/{id}/dependents/{dependentId}", + "method": "removeDependent", + "httpMethod": "delete", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "Remove job property's dependent", + "parameters": [], + "responses": [ + { + "statusCode": "204", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/configuration/job-properties/{id}/dependents/{dependentId}/values", + "method": "getDependentPropertyValues", + "httpMethod": "get", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "Get dependent job property's values", + "parameters": [ + { + "name": "acceptLanguage", + "schema": "string", + "required": false, + "description": "language of returned content", + "default": "en" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/configuration/job-properties/{id}/values/{valueId}/dependents/{dependentId}/values", + "method": "getDependentValues", + "httpMethod": "get", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "Get job property's dependent values", + "parameters": [ + { + "name": "acceptLanguage", + "schema": "string", + "required": false, + "description": "language of returned content", + "default": "en" + }, + { + "name": "pageId", + "schema": "string", + "required": false, + "description": "identifier of the next page of subscriptions" + }, + { + "name": "pageSize", + "schema": "integer", + "required": false, + "description": "pageSize" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/configuration/job-properties/{id}/values/{valueId}/dependents/{dependentId}/values", + "method": "addDependentValue", + "httpMethod": "post", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "Add job property's dependent value", + "parameters": [ + { + "name": "id", + "schema": "string", + "required": true, + "description": "", + "example": "ID" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "409", + "description": "" + }, + { + "statusCode": "422", + "description": "when input validation fails" + } + ] + }, + { + "url": "/configuration/job-properties/{id}/values/{valueId}/dependents/{dependentId}/values/{dependentValueId}", + "method": "removeDependentValuesRelationship", + "httpMethod": "delete", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "Remove job property's dependent values relationship", + "parameters": [], + "responses": [ + { + "statusCode": "204", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/configuration/departments", + "method": "getDepartments", + "httpMethod": "get", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "Get departments", + "parameters": [ + { + "name": "acceptLanguage", + "schema": "string", + "required": false, + "description": "language of returned content", + "default": "en" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + } + ] + }, + { + "url": "/configuration/departments", + "method": "createDepartment", + "httpMethod": "post", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "Creates department", + "parameters": [ + { + "name": "description", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "id", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "label", + "schema": "string", + "required": true, + "description": "", + "example": "LABEL" + } + ], + "responses": [ + { + "statusCode": "201", + "description": "" + }, + { + "statusCode": "400", + "description": "" + } + ] + }, + { + "url": "/configuration/departments/{id}", + "method": "getDepartmentById", + "httpMethod": "get", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "Get department", + "parameters": [ + { + "name": "id", + "schema": "string", + "required": true, + "description": "Identifier of a department", + "example": "ID" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/configuration/hiring-processes", + "method": "getHiringProcesses", + "httpMethod": "get", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "Get list of hiring process", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + } + ] + }, + { + "url": "/configuration/hiring-processes/{id}", + "method": "getHiringProcess", + "httpMethod": "get", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "Get hiring process", + "parameters": [ + { + "name": "id", + "schema": "string", + "required": true, + "description": "Identifier of a hiring process", + "example": "ID" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/configuration/offer-properties", + "method": "listOfferProperties", + "httpMethod": "get", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "Get a list of available offer properties", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "403", + "description": "" + } + ] + }, + { + "url": "/configuration/candidate-properties", + "method": "getCandidateProperties", + "httpMethod": "get", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "Get a list of available candidate properties", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "403", + "description": "" + } + ] + }, + { + "url": "/configuration/candidate-properties/{id}", + "method": "getCandidatePropertyById", + "httpMethod": "get", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "Get candidate property by id", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/configuration/candidate-properties/{id}/values", + "method": "getCandidatePropertyValues", + "httpMethod": "get", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "Get Candidate Property values", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/configuration/candidate-properties/{id}/values", + "method": "createCandidatePropertyValue", + "httpMethod": "post", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "Create candidate property value", + "parameters": [ + { + "name": "id", + "schema": "string", + "required": true, + "description": "", + "example": "ID" + }, + { + "name": "value", + "schema": "undefined", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "201", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "409", + "description": "" + } + ] + }, + { + "url": "/configuration/candidate-properties/{id}/values/{valueId}", + "method": "removeValue", + "httpMethod": "delete", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "Remove candidate property value", + "parameters": [], + "responses": [ + { + "statusCode": "204", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/configuration/candidate-properties/{id}/values/{valueId}", + "method": "getCandidatePropertyValueById", + "httpMethod": "get", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "Get Candidate Property value by id", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/configuration/candidate-properties/{id}/values/{valueId}", + "method": "updatePropertyValueLabel", + "httpMethod": "put", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "Update candidate property value label", + "parameters": [ + { + "name": "label", + "schema": "string", + "required": true, + "description": "", + "example": "LABEL" + } + ], + "responses": [ + { + "statusCode": "201", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "409", + "description": "" + } + ] + }, + { + "url": "/configuration/sources", + "method": "listCandidateSourceTypesWithSubtypes", + "httpMethod": "get", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "List candidate source types with subtypes", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + } + ] + }, + { + "url": "/configuration/sources/{sourceType}/values", + "method": "listCandidateSourcesByType", + "httpMethod": "get", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "List candidate sources", + "parameters": [ + { + "name": "sourceSubType", + "schema": "string", + "required": false, + "description": "Source SubType from /configuration/sources" + }, + { + "name": "limit", + "schema": "integer", + "required": false, + "description": "number of elements to return. max value is 100", + "default": 100 + }, + { + "name": "offset", + "schema": "integer", + "required": false, + "description": "number of elements to skip while processing result", + "default": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/configuration/sources/{sourceType}/values/{sourceValueId}", + "method": "getCandidateSource", + "httpMethod": "get", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "Get a candidate source", + "parameters": [ + { + "name": "sourceSubType", + "schema": "string", + "required": false, + "description": "Source SubType from /configuration/sources" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/configuration/sources/{sourceIdentifier}", + "method": "getCandidateSourceById", + "httpMethod": "get", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "Get a candidate source by identifier.", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/configuration/rejection-reasons", + "method": "getRejectionReasons", + "httpMethod": "get", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "Get rejection reasons", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + } + ] + }, + { + "url": "/configuration/withdrawal-reasons", + "method": "getWithdrawalReasons", + "httpMethod": "get", + "tag": "configuration", + "typeScriptTag": "configuration", + "description": "Get withdrawal reasons", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "403", + "description": "" + } + ] + }, + { + "url": "/publications/{postingId}", + "method": "getPostingById", + "httpMethod": "get", + "tag": "feed", + "typeScriptTag": "feed", + "description": "Get posting by id", + "parameters": [ + { + "name": "postingId", + "schema": "integer", + "required": true, + "description": "Posting id to find", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "Unauthorized" + }, + { + "statusCode": "404", + "description": "Not found" + } + ] + }, + { + "url": "/publications/{postingId}", + "method": "updatePostingInfo", + "httpMethod": "put", + "tag": "feed", + "typeScriptTag": "feed", + "description": "Update posting information", + "parameters": [ + { + "name": "postingId", + "schema": "integer", + "required": true, + "description": "A single posting id. Allows updating information only for the defined postings.", + "example": 0 + }, + { + "name": "liveUrl", + "schema": "string", + "description": "" + }, + { + "name": "status", + "schema": "string", + "description": "" + }, + { + "name": "comment", + "schema": "string", + "description": "" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "Posting successfully updated" + }, + { + "statusCode": "400", + "description": "Payload not valid" + }, + { + "statusCode": "401", + "description": "Wrong token" + }, + { + "statusCode": "404", + "description": "PostingId not found" + } + ] + }, + { + "url": "/publications", + "method": "listPostings", + "httpMethod": "get", + "tag": "feed", + "typeScriptTag": "feed", + "description": "Get a list of postings", + "parameters": [ + { + "name": "updatedAfter", + "schema": "string", + "description": "List postings created after the specified date.

Date should be in ISO 8601 format: (e.g.: '2015-07-27T08:43:33.000Z').

If no value is provided, only postings created in the last 30 days will be returned." + }, + { + "name": "status", + "schema": "array", + "description": "List of posting statuses separated by comma.

Status definition:
  • Pending - this is a new posting that is pending publication on your job board. You should always retrieve these postings, publish them, and then update the status via the PUT method.
  • UnderPosting - this is a status that is only set by you. It indicates that a posting is currently being published but is not yet available on the job board. SmartRecruiters will never set this status ourselves.
  • Active - this is a status that is only set by you. It indicates that the posting has been successfully published and is available on the job board. SmartRecruiters will never set this status ourselves.
  • toUnpost - this posting has either expired or has manually been requested for removal by the client. As a job board, you should unpost these postings immediately, and then update the status to Inactive via the PUT method.
  • Inactive - this is a status that is only set by you. It indicates that the posting has been successfully unpublished and is no longer available on the job board. SmartRecruiters will never set this status ourselves.
  • Error - this is a status only set by you. It indicates that the posting could not be published. SmartRecruiters will never set this status ourselves.

Example: status=Active,Error" + }, + { + "name": "offset", + "schema": "string", + "description": "Number of elements to skip while processing result.
Allowed range: [0, 2^31-1].", + "default": "0" + }, + { + "name": "limit", + "schema": "string", + "description": "Maximum number of postings returned.
Allowed range: [0, 100].", + "default": "100" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "Unauthorized" + }, + { + "statusCode": "404", + "description": "Not found" + } + ] + }, + { + "url": "/interview-types", + "method": "getTypes", + "httpMethod": "get", + "tag": "interview types", + "typeScriptTag": "interviewTypes", + "description": "Retrieves interview types", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/interview-types", + "method": "addExistingTypes", + "httpMethod": "patch", + "tag": "interview types", + "typeScriptTag": "interviewTypes", + "description": "Adds interview types to already existing ones", + "parameters": [], + "responses": [ + { + "statusCode": "204", + "description": "Interview types updated" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "409", + "description": "" + }, + { + "statusCode": "422", + "description": "When input validation fails" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/interview-types/{interviewType}", + "method": "removeByType", + "httpMethod": "delete", + "tag": "interview types", + "typeScriptTag": "interviewTypes", + "description": "Removes interview type with given name", + "parameters": [], + "responses": [ + { + "statusCode": "204", + "description": "Interview type deleted" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/interviews", + "method": "getList", + "httpMethod": "get", + "tag": "interviews", + "typeScriptTag": "interviews", + "description": "Retrieves a list of interviews", + "parameters": [ + { + "name": "applicationId", + "schema": "string", + "required": true, + "description": "ID of the application", + "example": "APPLICATIONID" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/interviews", + "method": "createNewInterview", + "httpMethod": "post", + "tag": "interviews", + "typeScriptTag": "interviews", + "description": "Creates an interview", + "parameters": [ + { + "name": "id", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "candidate", + "schema": "object", + "required": true, + "description": "" + }, + { + "name": "jobId", + "schema": "string", + "required": true, + "description": "", + "example": "JOBID" + }, + { + "name": "location", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "organizerId", + "schema": "string", + "required": true, + "description": "", + "example": "ORGANIZERID" + }, + { + "name": "timezone", + "schema": "string", + "required": true, + "description": "", + "example": "TIMEZONE" + }, + { + "name": "timeslots", + "schema": "array", + "required": true, + "description": "" + }, + { + "name": "createdOn", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "refUrl", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "source", + "schema": "string", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "201", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "422", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/interviews/{interviewId}", + "method": "deleteById", + "httpMethod": "delete", + "tag": "interviews", + "typeScriptTag": "interviews", + "description": "Deletes an interview", + "parameters": [], + "responses": [ + { + "statusCode": "204", + "description": "Interview was deleted" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/interviews/{interviewId}", + "method": "getDetails", + "httpMethod": "get", + "tag": "interviews", + "typeScriptTag": "interviews", + "description": "Retrieves an interview", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/interviews/{interviewId}", + "method": "modifyInterview", + "httpMethod": "patch", + "tag": "interviews", + "typeScriptTag": "interviews", + "description": "Modifies an interview", + "parameters": [ + { + "name": "location", + "schema": "string", + "description": "" + }, + { + "name": "timezone", + "schema": "string", + "description": "" + }, + { + "name": "candidate", + "schema": "object", + "description": "" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "Interview updated" + }, + { + "statusCode": "400", + "description": "with codes:\n* **INVALID_TIMEZONE** when invalid timezone\n" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "422", + "description": "When input validation fails" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/interviews/{interviewId}/timeslots", + "method": "createNewTimeslot", + "httpMethod": "post", + "tag": "timeslots", + "typeScriptTag": "timeslots", + "description": "Creates a timeslot", + "parameters": [ + { + "name": "interviewId", + "schema": "string", + "required": true, + "description": "ID of the interview", + "example": "INTERVIEWID" + }, + { + "name": "title", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "id", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "interviewType", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "place", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "startsOn", + "schema": "string", + "required": true, + "description": "", + "example": "STARTSON" + }, + { + "name": "endsOn", + "schema": "string", + "required": true, + "description": "", + "example": "ENDSON" + }, + { + "name": "interviewers", + "schema": "array", + "required": true, + "description": "" + }, + { + "name": "candidateStatus", + "schema": "string", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "201", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "409", + "description": "" + }, + { + "statusCode": "422", + "description": "When input validation fails or with codes:\n* **INACTIVE_OR_DELETED_INTERVIEWERS** when at least one of the interviewers is inactive or deleted\n* **END_DATE_BEFORE_START_DATE** when end date of the timeslot is before start date\n* **NON_EXISTING_INTERVIEWERS** when at least one of the interviewers does not exist\n" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/interviews/{interviewId}/timeslots/{timeslotId}", + "method": "deleteTimeslot", + "httpMethod": "delete", + "tag": "timeslots", + "typeScriptTag": "timeslots", + "description": "Deletes a timeslot", + "parameters": [], + "responses": [ + { + "statusCode": "204", + "description": "Timeslot deleted" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "with codes:\n* **INTERVIEW_NOT_FOUND** when no interview with given id\n* **TIMESLOT_NOT_FOUND** when no timeslot with given id\n" + }, + { + "statusCode": "409", + "description": "with codes:\n* **CANNOT_DELETE_LAST_TIMESLOT** when cannot delete last timeslot\n" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/interviews/{interviewId}/timeslots/{timeslotId}", + "method": "getById", + "httpMethod": "get", + "tag": "timeslots", + "typeScriptTag": "timeslots", + "description": "Retrieves a timeslot", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "with codes:\n* **INTERVIEW_NOT_FOUND** when no interview with given id\n* **TIMESLOT_NOT_FOUND** when no timeslot with given id\n" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/interviews/{interviewId}/timeslots/{timeslotId}", + "method": "modifyTimeSlot", + "httpMethod": "patch", + "tag": "timeslots", + "typeScriptTag": "timeslots", + "description": "Modifies a timeslot", + "parameters": [ + { + "name": "title", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "id", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "interviewType", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "place", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "startsOn", + "schema": "string", + "required": true, + "description": "", + "example": "STARTSON" + }, + { + "name": "endsOn", + "schema": "string", + "required": true, + "description": "", + "example": "ENDSON" + }, + { + "name": "interviewers", + "schema": "array", + "required": true, + "description": "" + }, + { + "name": "candidateStatus", + "schema": "string", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "Timeslot updated" + }, + { + "statusCode": "400", + "description": "Missing data in timeslot object" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "with codes:\n* **INTERVIEW_NOT_FOUND** when no interview with given id\n* **TIMESLOT_NOT_FOUND** when no timeslot with given id\n" + }, + { + "statusCode": "422", + "description": "When input validation fails or with codes:\n* **INACTIVE_OR_DELETED_INTERVIEWERS** when at least one of the interviewers is inactive or deleted\n* **END_DATE_BEFORE_START_DATE** when end date of the timeslot is before start date\n* **NON_EXISTING_INTERVIEWERS** when at least one of the interviewers does not exist\n" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/interviews/{interviewId}/candidate/status", + "method": "updateCandidateStatus", + "httpMethod": "put", + "tag": "statuses", + "typeScriptTag": "statuses", + "description": "Changes a candidate's status.", + "parameters": [ + { + "name": "status", + "schema": "string", + "required": true, + "description": "", + "example": "STATUS" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "Status successfully changed" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "with codes:\n* **INTERVIEW_NOT_FOUND** when no interview with given id\n" + }, + { + "statusCode": "422", + "description": "When input validation fails" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/interviews/{interviewId}/timeslots/{timeslotId}/interviewers/{userId}/status", + "method": "updateInterviewerStatusInSlot", + "httpMethod": "put", + "tag": "statuses", + "typeScriptTag": "statuses", + "description": "Changes a interviewer's status in given timeslot", + "parameters": [ + { + "name": "status", + "schema": "string", + "required": true, + "description": "", + "example": "STATUS" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "Status successfully changed" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "with codes:\n* **INTERVIEW_NOT_FOUND** when no interview with given id * **TIMESLOT_NOT_FOUND** when no timeslot with given id * **NON_EXISTING_INTERVIEWERS** when no interviewer with given id exists in timeslot\n" + }, + { + "statusCode": "422", + "description": "When input validation fails" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/interviews/{interviewId}/timeslots/{timeslotId}/candidateStatus", + "method": "updateCandidateTimeslotStatus", + "httpMethod": "put", + "tag": "statuses", + "typeScriptTag": "statuses", + "description": "Changes a candidate's status in given timeslot", + "parameters": [ + { + "name": "status", + "schema": "string", + "required": true, + "description": "", + "example": "STATUS" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "Candidate status in a timeslot is successfully changed" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "with codes:\n* **INTERVIEW_NOT_FOUND** when no interview with given id * **TIMESLOT_NOT_FOUND** when no timeslot with given id\n" + }, + { + "statusCode": "422", + "description": "When input validation fails" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/jobs/{jobId}/positions", + "method": "getPositionsForJob", + "httpMethod": "get", + "tag": "jobs", + "typeScriptTag": "jobs", + "description": "Positions for a job", + "parameters": [ + { + "name": "acceptLanguage", + "schema": "string", + "required": false, + "description": "language of returned content", + "default": "en" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "403", + "description": "" + } + ] + }, + { + "url": "/jobs/{jobId}/positions", + "method": "createNewPosition", + "httpMethod": "post", + "tag": "jobs", + "typeScriptTag": "jobs", + "description": "Create a new position for a job", + "parameters": [ + { + "name": "positionId", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "incumbentName", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "type", + "schema": "string", + "required": true, + "description": "", + "example": "TYPE" + }, + { + "name": "positionOpenDate", + "schema": "string", + "required": true, + "description": "", + "example": "POSITIONOPENDATE" + }, + { + "name": "targetStartDate", + "schema": "string", + "required": true, + "description": "", + "example": "TARGETSTARTDATE" + } + ], + "responses": [ + { + "statusCode": "201", + "description": "" + }, + { + "statusCode": "403", + "description": "" + } + ] + }, + { + "url": "/jobs/{jobId}/positions/{positionId}", + "method": "deletePosition", + "httpMethod": "delete", + "tag": "jobs", + "typeScriptTag": "jobs", + "description": "Delete position", + "parameters": [], + "responses": [ + { + "statusCode": "204", + "description": "Position successfully removed" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/jobs/{jobId}/positions/{positionId}", + "method": "getSinglePosition", + "httpMethod": "get", + "tag": "jobs", + "typeScriptTag": "jobs", + "description": "Get a single position", + "parameters": [ + { + "name": "acceptLanguage", + "schema": "string", + "required": false, + "description": "language of returned content", + "default": "en" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/jobs/{jobId}/positions/{positionId}", + "method": "updatePosition", + "httpMethod": "put", + "tag": "jobs", + "typeScriptTag": "jobs", + "description": "Update position", + "parameters": [ + { + "name": "positionId", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "incumbentName", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "type", + "schema": "string", + "required": true, + "description": "", + "example": "TYPE" + }, + { + "name": "positionOpenDate", + "schema": "string", + "required": true, + "description": "", + "example": "POSITIONOPENDATE" + }, + { + "name": "targetStartDate", + "schema": "string", + "required": true, + "description": "", + "example": "TARGETSTARTDATE" + } + ], + "responses": [ + { + "statusCode": "201", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/jobs/{jobId}/jobads", + "method": "findJobAdsForJob", + "httpMethod": "get", + "tag": "jobs", + "typeScriptTag": "jobs", + "description": "Find and list job ads for a given job", + "parameters": [ + { + "name": "acceptLanguage", + "schema": "string", + "required": false, + "description": "language of returned content", + "default": "en" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/jobs/{jobId}/jobads", + "method": "createJobAd", + "httpMethod": "post", + "tag": "jobs", + "typeScriptTag": "jobs", + "description": "Create a new job ad", + "parameters": [ + { + "name": "title", + "schema": "string", + "required": true, + "description": "", + "example": "TITLE" + }, + { + "name": "language", + "schema": "object", + "required": false, + "description": "" + }, + { + "name": "jobAd", + "schema": "object", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "with codes\n* **JOB_AD_LIMIT_REACHED** when job add limit (100 per job) is reached\n* **PROPERTY_INVALID** when one of job ad attribute contains invalid characters\n" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/jobs/{jobId}/jobads/{jobAdId}", + "method": "getJobAd", + "httpMethod": "get", + "tag": "jobs", + "typeScriptTag": "jobs", + "description": "Get a job ad", + "parameters": [ + { + "name": "acceptLanguage", + "schema": "string", + "required": false, + "description": "language of returned content", + "default": "en" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/jobs/{jobId}/jobads/{jobAdId}", + "method": "updateJobAd", + "httpMethod": "put", + "tag": "jobs", + "typeScriptTag": "jobs", + "description": "Update a job ad", + "parameters": [ + { + "name": "title", + "schema": "string", + "required": true, + "description": "", + "example": "TITLE" + }, + { + "name": "language", + "schema": "object", + "required": false, + "description": "" + }, + { + "name": "jobAd", + "schema": "object", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "with code\n* **PROPERTY_INVALID** when one of job ad attribute contains invalid characters\n" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/jobs/{jobId}/jobads/{jobAdId}/postings", + "method": "unpublishJobAd", + "httpMethod": "delete", + "tag": "jobs", + "typeScriptTag": "jobs", + "description": "Unpublish a job ad", + "parameters": [], + "responses": [ + { + "statusCode": "202", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/jobs/{jobId}/jobads/{jobAdId}/postings", + "method": "listPublicationsForJobAd", + "httpMethod": "get", + "tag": "jobs", + "typeScriptTag": "jobs", + "description": "List publications for a job ad", + "parameters": [ + { + "name": "acceptLanguage", + "schema": "string", + "required": false, + "description": "language of returned content", + "default": "en" + }, + { + "name": "activeOnly", + "schema": "boolean", + "required": false, + "description": "publication status filter; when omitted, defaults to 'true' (only active publications are returned); 'false' returns active and inactive publications", + "default": true + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/jobs/{jobId}/jobads/{jobAdId}/postings", + "method": "publishJobAdPostings", + "httpMethod": "post", + "tag": "jobs", + "typeScriptTag": "jobs", + "description": "Publishes a job ad", + "parameters": [ + { + "name": "aggregators", + "schema": "boolean", + "description": "", + "default": true + }, + { + "name": "visibility", + "schema": "string", + "description": "", + "default": "PUBLIC" + } + ], + "responses": [ + { + "statusCode": "202", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/jobs/{jobId}/publication", + "method": "unpublishJobFromAllSources", + "httpMethod": "delete", + "tag": "jobs", + "typeScriptTag": "jobs", + "description": "Unpublishes a job from all sources", + "parameters": [], + "responses": [ + { + "statusCode": "204", + "description": "" + }, + { + "statusCode": "401", + "description": "" + } + ] + }, + { + "url": "/jobs/{jobId}/publication", + "method": "findPublications", + "httpMethod": "get", + "tag": "jobs", + "typeScriptTag": "jobs", + "description": "Find and list publications for a job", + "parameters": [ + { + "name": "acceptLanguage", + "schema": "string", + "required": false, + "description": "language of returned content", + "default": "en" + }, + { + "name": "activeOnly", + "schema": "boolean", + "required": false, + "description": "publication status filter; defaults to 'true' (only active publications are returned); 'false' returns active and inactive publications", + "default": true + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + } + ] + }, + { + "url": "/jobs/{jobId}/publication", + "method": "publishDefaultJobAd", + "httpMethod": "post", + "tag": "jobs", + "typeScriptTag": "jobs", + "description": "Publishes a default job ad", + "parameters": [ + { + "name": "aggregators", + "schema": "boolean", + "description": "", + "default": true + }, + { + "name": "visibility", + "schema": "string", + "description": "", + "default": "PUBLIC" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + } + ] + }, + { + "url": "/jobs/{jobId}/hiring-team", + "method": "getHiringTeam", + "httpMethod": "get", + "tag": "jobs", + "typeScriptTag": "jobs", + "description": "Get hiring team of a job with a given id.", + "parameters": [ + { + "name": "acceptLanguage", + "schema": "string", + "required": false, + "description": "language of returned content", + "default": "en" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + } + ] + }, + { + "url": "/jobs/{jobId}/hiring-team", + "method": "addHiringTeamMember", + "httpMethod": "post", + "tag": "jobs", + "typeScriptTag": "jobs", + "description": "Add hiring team member of a job with a given id.", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "409", + "description": "" + } + ] + }, + { + "url": "/jobs/{jobId}/hiring-team/{userId}", + "method": "removeHiringTeamMember", + "httpMethod": "delete", + "tag": "jobs", + "typeScriptTag": "jobs", + "description": "Removes hiring team member of a job with a given id.", + "parameters": [], + "responses": [ + { + "statusCode": "204", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/jobs/{jobId}/note", + "method": "getNoteById", + "httpMethod": "get", + "tag": "jobs", + "typeScriptTag": "jobs", + "description": "Get note of a job.", + "parameters": [ + { + "name": "acceptLanguage", + "schema": "string", + "required": false, + "description": "language of returned content", + "default": "en" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/jobs/{jobId}/note", + "method": "updateNote", + "httpMethod": "put", + "tag": "jobs", + "typeScriptTag": "jobs", + "description": "Update note of a job.", + "parameters": [ + { + "name": "content", + "schema": "string", + "required": true, + "description": "", + "example": "CONTENT" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + } + ] + }, + { + "url": "/jobs/{jobId}/headcount", + "method": "updateHeadcount", + "httpMethod": "patch", + "tag": "jobs", + "typeScriptTag": "jobs", + "description": "Update job headcount.", + "parameters": [ + { + "name": "salaryRange", + "schema": "object", + "description": "" + } + ], + "responses": [ + { + "statusCode": "202", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + } + ] + }, + { + "url": "/jobs", + "method": "searchJobsByParams", + "httpMethod": "get", + "tag": "jobs", + "typeScriptTag": "jobs", + "description": "Search jobs", + "parameters": [ + { + "name": "acceptLanguage", + "schema": "string", + "required": false, + "description": "language of returned content", + "default": "en" + }, + { + "name": "q", + "schema": "string", + "required": false, + "description": "full-text search query based on a job title; case insensitive; e.g. java developer" + }, + { + "name": "limit", + "schema": "integer", + "required": false, + "description": "number of elements to return. max value is 100", + "default": 10 + }, + { + "name": "offset", + "schema": "integer", + "required": false, + "description": "number of elements to skip while processing result; this method of paging is very slow and is deprecated, please use `pageId` instead", + "default": 0 + }, + { + "name": "pageId", + "schema": "string", + "required": false, + "description": "unique identifier for next page of jobs - returned as `nextPageId` in previous page result. You must set `job_id` value for `sort` parameter if you use `pageId`." + }, + { + "name": "sort", + "schema": "string", + "required": false, + "description": "Order in which results are returned.\n- default - sorts results by creation date or by match score and creation date if query (https://developers.smartrecruiters.com/reference is set. Can't be used with pageId parameter (request might not return all results)\n- job_id - sorts results by job id. The only supported sorting order when using pageId based pagination." + }, + { + "name": "city", + "schema": "array", + "required": false, + "description": "city filter (part of the location object); can be used repeatedly; case sensitive; e.g. San Francisco" + }, + { + "name": "department", + "schema": "array", + "required": false, + "description": "department filter (by department label); can be used repeatedly; case sensitive; e.g. “Marketing”" + }, + { + "name": "updatedAfter", + "schema": "string", + "required": false, + "description": "ISO8601-formatted time boundaries for the job update time, Format: yyyy-MM-ddTHH:mm:ss.SSSZZ" + }, + { + "name": "lastActivityAfter", + "schema": "string", + "required": false, + "description": "ISO8601-formatted time boundaries for the job lastActivityOn time, Format: yyyy-MM-ddTHH:mm:ss.SSSZZ.\nlastActivityOn is updated when job is edited, new candidates apply or job is published.\n" + }, + { + "name": "language", + "schema": "string", + "required": false, + "description": "Exceptions to the language code ISO format:\n* \"en-GB\" - \"English - English (https://developers.smartrecruiters.com/reference\"\n* \"es-MX\" - \"Spanish - español (México)\"\n* \"fr-CA\" - \"French - français (https://developers.smartrecruiters.com/reference\"\n* \"pt-BR\" - \"Portugal - português (https://developers.smartrecruiters.com/reference\"\n* \"zh-TW\" - \"Chinese (https://developers.smartrecruiters.com/reference - 中文 (香港)\"\n* \"zh-CN\" - \"Chinese (https://developers.smartrecruiters.com/reference - 中文 (简体)\"\n\n\nValue \"pt-PT\" is deprecated and will not work, use \"pt\" instead.\n" + }, + { + "name": "status", + "schema": "string", + "required": false, + "description": "Status of a job\n" + }, + { + "name": "postingStatus", + "schema": "string", + "required": false, + "description": "Posting status of a job\n" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + } + ] + }, + { + "url": "/jobs", + "method": "createNewJob", + "httpMethod": "post", + "tag": "jobs", + "typeScriptTag": "jobs", + "description": "Create a new job", + "parameters": [ + { + "name": "title", + "schema": "string", + "required": true, + "description": "", + "example": "TITLE" + }, + { + "name": "refNumber", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "targetHiringDate", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "department", + "schema": "object", + "required": false, + "description": "" + }, + { + "name": "location", + "schema": "object", + "required": true, + "description": "" + }, + { + "name": "industry", + "schema": "object", + "required": true, + "description": "" + }, + { + "name": "function", + "schema": "object", + "required": true, + "description": "" + }, + { + "name": "typeOfEmployment", + "schema": "object", + "required": false, + "description": "" + }, + { + "name": "experienceLevel", + "schema": "object", + "required": true, + "description": "" + }, + { + "name": "eeoCategory", + "schema": "object", + "required": false, + "description": "" + }, + { + "name": "template", + "schema": "boolean", + "required": false, + "description": "" + }, + { + "name": "compensation", + "schema": "object", + "required": false, + "description": "" + }, + { + "name": "jobAd", + "schema": "object", + "required": false, + "description": "" + }, + { + "name": "properties", + "schema": "array", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "201", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "409", + "description": "" + }, + { + "statusCode": "422", + "description": "Input validation fails" + } + ] + }, + { + "url": "/jobs/{jobId}", + "method": "getContentById", + "httpMethod": "get", + "tag": "jobs", + "typeScriptTag": "jobs", + "description": "Get content of a job with a given id.", + "parameters": [ + { + "name": "acceptLanguage", + "schema": "string", + "required": false, + "description": "language of returned content", + "default": "en" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + } + ] + }, + { + "url": "/jobs/{jobId}", + "method": "updateJobAttributes", + "httpMethod": "patch", + "tag": "jobs", + "typeScriptTag": "jobs", + "description": "Update a job", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "422", + "description": "Input validation fails" + } + ] + }, + { + "url": "/jobs/{jobId}", + "method": "updateJobAndJobAd", + "httpMethod": "put", + "tag": "jobs", + "typeScriptTag": "jobs", + "description": "Updates job", + "parameters": [ + { + "name": "title", + "schema": "string", + "required": true, + "description": "", + "example": "TITLE" + }, + { + "name": "refNumber", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "targetHiringDate", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "department", + "schema": "object", + "required": false, + "description": "" + }, + { + "name": "location", + "schema": "object", + "required": true, + "description": "" + }, + { + "name": "industry", + "schema": "object", + "required": true, + "description": "" + }, + { + "name": "function", + "schema": "object", + "required": true, + "description": "" + }, + { + "name": "typeOfEmployment", + "schema": "object", + "required": false, + "description": "" + }, + { + "name": "experienceLevel", + "schema": "object", + "required": true, + "description": "" + }, + { + "name": "eeoCategory", + "schema": "object", + "required": false, + "description": "" + }, + { + "name": "template", + "schema": "boolean", + "required": false, + "description": "" + }, + { + "name": "compensation", + "schema": "object", + "required": false, + "description": "" + }, + { + "name": "jobAd", + "schema": "object", + "required": false, + "description": "" + }, + { + "name": "properties", + "schema": "array", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "422", + "description": "Input validation fails" + } + ] + }, + { + "url": "/jobs/{jobId}/status", + "method": "updateStatus", + "httpMethod": "put", + "tag": "jobs", + "typeScriptTag": "jobs", + "description": "Updates job status", + "parameters": [ + { + "name": "status", + "schema": "string", + "required": true, + "description": "", + "example": "STATUS" + } + ], + "responses": [ + { + "statusCode": "201", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/jobs/{jobId}/status/history", + "method": "getStatusHistory", + "httpMethod": "get", + "tag": "jobs", + "typeScriptTag": "jobs", + "description": "Job status history", + "parameters": [ + { + "name": "acceptLanguage", + "schema": "string", + "required": false, + "description": "language of returned content", + "default": "en" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + } + ] + }, + { + "url": "/jobs/{jobId}/approvals/latest", + "method": "getLatestApprovals", + "httpMethod": "get", + "tag": "jobs", + "typeScriptTag": "jobs", + "description": "Get latest approval request for given job", + "parameters": [ + { + "name": "acceptLanguage", + "schema": "string", + "required": false, + "description": "language of returned content", + "default": "en" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/job-applications/{jobApplicationId}", + "method": "getById", + "httpMethod": "get", + "tag": "job-applications", + "typeScriptTag": "jobApplications", + "description": "Get a job application", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/messages/shares", + "method": "shareNewMessages", + "httpMethod": "post", + "tag": "messages", + "typeScriptTag": "messages", + "description": "Shares new messages on Hireloop with Users, Hiring Teams or Everyone and sends emails.", + "parameters": [ + { + "name": "content", + "schema": "string", + "required": true, + "description": "", + "example": "CONTENT" + }, + { + "name": "correlationId", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "shareWith", + "schema": "object", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "201", + "description": "" + }, + { + "statusCode": "400", + "description": "" + } + ] + }, + { + "url": "/messages/shares/{id}", + "method": "deleteById", + "httpMethod": "delete", + "tag": "messages", + "typeScriptTag": "messages", + "description": "Delete a message", + "parameters": [ + { + "name": "id", + "schema": "string", + "required": true, + "description": "identifier of a message", + "example": "ID" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "Message successfully deleted" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/messages", + "method": "getByCandidateAndJobId", + "httpMethod": "get", + "tag": "messages", + "typeScriptTag": "messages", + "description": "Fetch messages", + "parameters": [ + { + "name": "candidateId", + "schema": "string", + "required": true, + "description": "identifier of a candidate", + "example": "CANDIDATEID" + }, + { + "name": "jobId", + "schema": "string", + "required": false, + "description": "identifier of a job" + }, + { + "name": "pageId", + "schema": "string", + "required": false, + "description": "identifier of next page" + }, + { + "name": "limit", + "schema": "integer", + "required": false, + "description": "limit", + "default": 10 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "with codes:\n* **CANDIDATE_NOT_FOUND** when candidate with given id does not exist\n* **JOB_NOT_FOUND** when job with given id does not exist\n* **APPLICATION_NOT_FOUND** when candidate does not have application for given job\n" + }, + { + "statusCode": "403", + "description": "" + } + ] + }, + { + "url": "/candidates/{id}/jobs/{jobId}/offers", + "method": "getCandidateJobOffers", + "httpMethod": "get", + "tag": "offers", + "typeScriptTag": "offers", + "description": "Get candidate's offers", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/candidates/{id}/jobs/{jobId}/offers/{offerId}", + "method": "getCandidateOffer", + "httpMethod": "get", + "tag": "offers", + "typeScriptTag": "offers", + "description": "Get candidate's offer", + "parameters": [ + { + "name": "offerId", + "schema": "string", + "required": true, + "description": "Identifier of a Offer", + "example": "OFFERID" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/candidates/{id}/jobs/{jobId}/offers/{offerId}/approvals/latest", + "method": "getLatestApprovalRequest", + "httpMethod": "get", + "tag": "offers", + "typeScriptTag": "offers", + "description": "Get latest approval request for candidate's offer", + "parameters": [ + { + "name": "offerId", + "schema": "string", + "required": true, + "description": "Identifier of a Offer", + "example": "OFFERID" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "Approval request" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/offers", + "method": "searchByCriteria", + "httpMethod": "get", + "tag": "offers", + "typeScriptTag": "offers", + "description": "Search offers by criteria", + "parameters": [ + { + "name": "limit", + "schema": "integer", + "description": "number of offers to return. max number of offers returned by single call is 100" + }, + { + "name": "offset", + "schema": "integer", + "description": "number of offers to skip while processing result" + }, + { + "name": "status", + "schema": "string", + "description": "offer status; available values are: INACTIVE, UNDER_REVIEW, ACTIVE, REJECTED" + }, + { + "name": "q", + "schema": "string", + "description": "full text query. will match offers with name and description matching query string" + }, + { + "name": "postingId", + "schema": "string", + "description": "id of a job posting; allows getting offer information using Posting Id coming from Job Board API; not relevant for Assessment vendors" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "default", + "description": "" + } + ] + }, + { + "url": "/offers", + "method": "insertNewOffer", + "httpMethod": "post", + "tag": "offers", + "typeScriptTag": "offers", + "description": "Create offer", + "parameters": [ + { + "name": "description", + "schema": "string", + "required": true, + "description": "", + "example": "DESCRIPTION" + }, + { + "name": "id", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "createDate", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "lastUpdateDate", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "catalogId", + "schema": "string", + "required": true, + "description": "", + "example": "CATALOGID" + }, + { + "name": "name", + "schema": "string", + "required": true, + "description": "", + "example": "NAME" + }, + { + "name": "category", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "terms", + "schema": "object", + "required": true, + "description": "" + }, + { + "name": "status", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "targetMarket", + "schema": "object", + "required": false, + "description": "" + }, + { + "name": "availability", + "schema": "object", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "default", + "description": "" + } + ] + }, + { + "url": "/offers/{offerId}/documents", + "method": "getRelatedDocuments", + "httpMethod": "get", + "tag": "offers", + "typeScriptTag": "offers", + "description": "Get a list of documents related to sent offer.", + "parameters": [ + { + "name": "offerId", + "schema": "string", + "required": true, + "description": "Identifier of an offer.", + "example": "OFFERID" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "409", + "description": "" + }, + { + "statusCode": "422", + "description": "" + } + ] + }, + { + "url": "/offers/{offerId}/documents/{documentId}", + "method": "getDocument", + "httpMethod": "get", + "tag": "offers", + "typeScriptTag": "offers", + "description": "Get a given document in a given sent offer", + "parameters": [ + { + "name": "offerId", + "schema": "string", + "required": true, + "description": "Identifier of an offer.", + "example": "OFFERID" + }, + { + "name": "documentId", + "schema": "string", + "required": true, + "description": "Identifier of a document.", + "example": "DOCUMENTID" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "409", + "description": "" + }, + { + "statusCode": "422", + "description": "" + } + ] + }, + { + "url": "/assessments/{assessmentOrderId}/comments/{commentId}", + "method": "getById", + "httpMethod": "get", + "tag": "comments", + "typeScriptTag": "comments", + "description": "Get comment by id", + "parameters": [ + { + "name": "assessmentOrderId", + "schema": "string", + "required": true, + "description": "unique id of an assessment order", + "example": "ASSESSMENTORDERID" + }, + { + "name": "commentId", + "schema": "string", + "required": true, + "description": "unique id of an assessment comment", + "example": "COMMENTID" + } + ], + "responses": [ + { + "statusCode": "default", + "description": "" + } + ] + }, + { + "url": "/assessments/{assessmentOrderId}/comments", + "method": "listByAssessmentOrderId", + "httpMethod": "get", + "tag": "comments", + "typeScriptTag": "comments", + "description": "List comments", + "parameters": [ + { + "name": "assessmentOrderId", + "schema": "string", + "required": true, + "description": "unique id of an assessment order", + "example": "ASSESSMENTORDERID" + }, + { + "name": "limit", + "schema": "string", + "description": "number of comments to return. max number of comments returned by single call is 100" + }, + { + "name": "offset", + "schema": "string", + "description": "number of comments to skip while processing result" + } + ], + "responses": [ + { + "statusCode": "default", + "description": "" + } + ] + }, + { + "url": "/assessments/{assessmentOrderId}/comments", + "method": "addNewCommentToAssessmentOrder", + "httpMethod": "post", + "tag": "comments", + "typeScriptTag": "comments", + "description": "Add new comment", + "parameters": [ + { + "name": "assessmentOrderId", + "schema": "string", + "required": true, + "description": "unique id of an assessment order", + "example": "ASSESSMENTORDERID" + }, + { + "name": "message", + "schema": "string", + "required": true, + "description": "", + "example": "MESSAGE" + }, + { + "name": "messageToCandidate", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "assessmentURL", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "author", + "schema": "object", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "default", + "description": "" + } + ] + }, + { + "url": "/assessments/{assessmentOrderId}/results/{resultId}/attachments/{attachmentId}", + "method": "getDetails", + "httpMethod": "get", + "tag": "attachments", + "typeScriptTag": "attachments", + "description": "Get assessment attachment", + "parameters": [ + { + "name": "assessmentOrderId", + "schema": "string", + "required": true, + "description": "unique id of an assessment order", + "example": "ASSESSMENTORDERID" + }, + { + "name": "resultId", + "schema": "string", + "required": true, + "description": "unique result id", + "example": "RESULTID" + }, + { + "name": "attachmentId", + "schema": "string", + "required": true, + "description": "unique id of an attachment", + "example": "ATTACHMENTID" + } + ], + "responses": [ + { + "statusCode": "default", + "description": "" + } + ] + }, + { + "url": "/assessments/{assessmentOrderId}/results/{resultId}/attachments/{attachmentId}", + "method": "updateFile", + "httpMethod": "post", + "tag": "attachments", + "typeScriptTag": "attachments", + "description": "Update assessment attachment", + "parameters": [ + { + "name": "assessmentOrderId", + "schema": "string", + "required": true, + "description": "unique id of an assessment order", + "example": "ASSESSMENTORDERID" + }, + { + "name": "resultId", + "schema": "string", + "required": true, + "description": "unique result id", + "example": "RESULTID" + }, + { + "name": "attachmentId", + "schema": "string", + "required": true, + "description": "unique id of an attachment", + "example": "ATTACHMENTID" + }, + { + "name": "attachment", + "schema": "string", + "required": true, + "description": "", + "example": "ATTACHMENT" + } + ], + "responses": [ + { + "statusCode": "default", + "description": "" + } + ] + }, + { + "url": "/assessments/{assessmentOrderId}/results/{resultId}/attachments", + "method": "getList", + "httpMethod": "get", + "tag": "attachments", + "typeScriptTag": "attachments", + "description": "List assessment results", + "parameters": [ + { + "name": "assessmentOrderId", + "schema": "string", + "required": true, + "description": "unique id of an assessment order", + "example": "ASSESSMENTORDERID" + }, + { + "name": "resultId", + "schema": "string", + "required": true, + "description": "unique result id", + "example": "RESULTID" + }, + { + "name": "limit", + "schema": "integer", + "description": "number of elements to return. max value is 100" + }, + { + "name": "offset", + "schema": "integer", + "description": "number of elements to skip while processing result" + } + ], + "responses": [ + { + "statusCode": "default", + "description": "" + } + ] + }, + { + "url": "/assessments/{assessmentOrderId}/results/{resultId}/attachments", + "method": "submitNewAssessmentResultFile", + "httpMethod": "post", + "tag": "attachments", + "typeScriptTag": "attachments", + "description": "Attach assessment results", + "parameters": [ + { + "name": "assessmentOrderId", + "schema": "string", + "required": true, + "description": "unique id of an assessment order", + "example": "ASSESSMENTORDERID" + }, + { + "name": "resultId", + "schema": "string", + "required": true, + "description": "unique result id", + "example": "RESULTID" + }, + { + "name": "attachment", + "schema": "string", + "required": true, + "description": "", + "example": "ATTACHMENT" + } + ], + "responses": [ + { + "statusCode": "default", + "description": "" + } + ] + }, + { + "url": "/assessments/{assessmentOrderId}/results/{resultId}", + "method": "findById", + "httpMethod": "get", + "tag": "results", + "typeScriptTag": "results", + "description": "Get assessment results by id", + "parameters": [ + { + "name": "assessmentOrderId", + "schema": "string", + "required": true, + "description": "unique id of an assessment order", + "example": "ASSESSMENTORDERID" + }, + { + "name": "resultId", + "schema": "string", + "required": true, + "description": "unique id of an assessment result", + "example": "RESULTID" + } + ], + "responses": [ + { + "statusCode": "default", + "description": "" + } + ] + }, + { + "url": "/assessments/{assessmentOrderId}/results", + "method": "listByAssessmentOrderId", + "httpMethod": "get", + "tag": "results", + "typeScriptTag": "results", + "description": "List assessment results", + "parameters": [ + { + "name": "assessmentOrderId", + "schema": "string", + "required": true, + "description": "unique id of an assessment order", + "example": "ASSESSMENTORDERID" + }, + { + "name": "limit", + "schema": "integer", + "description": "number of elements to return. max value is 100" + }, + { + "name": "offset", + "schema": "integer", + "description": "number of elements to skip while processing result" + } + ], + "responses": [ + { + "statusCode": "default", + "description": "" + } + ] + }, + { + "url": "/assessments/{assessmentOrderId}/results", + "method": "submitNewAssessmentResult", + "httpMethod": "post", + "tag": "results", + "typeScriptTag": "results", + "description": "Submit assessment results", + "parameters": [ + { + "name": "assessmentOrderId", + "schema": "string", + "required": true, + "description": "unique id of an assessment order", + "example": "ASSESSMENTORDERID" + }, + { + "name": "title", + "schema": "string", + "required": true, + "description": "", + "example": "TITLE" + }, + { + "name": "description", + "schema": "string", + "required": true, + "description": "", + "example": "DESCRIPTION" + }, + { + "name": "id", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "createDate", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "passed", + "schema": "boolean", + "required": false, + "description": "" + }, + { + "name": "score", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "author", + "schema": "object", + "required": false, + "description": "" + }, + { + "name": "result", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "resultType", + "schema": "string", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "default", + "description": "" + } + ] + }, + { + "url": "/assessments/{assessmentOrderId}/accept", + "method": "acceptOrder", + "httpMethod": "post", + "tag": "assessments", + "typeScriptTag": "assessments", + "description": "Accept Assessment order", + "parameters": [ + { + "name": "assessmentOrderId", + "schema": "string", + "required": true, + "description": "unique id of an assessment order", + "example": "ASSESSMENTORDERID" + }, + { + "name": "message", + "schema": "string", + "required": true, + "description": "", + "example": "MESSAGE" + }, + { + "name": "messageToCandidate", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "assessmentURL", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "author", + "schema": "object", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "default", + "description": "" + } + ] + }, + { + "url": "/assessments/{assessmentOrderId}/complete", + "method": "markAsCompleted", + "httpMethod": "post", + "tag": "assessments", + "typeScriptTag": "assessments", + "description": "Complete Assessment order", + "parameters": [ + { + "name": "assessmentOrderId", + "schema": "string", + "required": true, + "description": "unique id of an assessment order", + "example": "ASSESSMENTORDERID" + }, + { + "name": "message", + "schema": "string", + "required": true, + "description": "", + "example": "MESSAGE" + }, + { + "name": "messageToCandidate", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "assessmentURL", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "author", + "schema": "object", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "default", + "description": "" + } + ] + }, + { + "url": "/assessments/{assessmentOrderId}", + "method": "getById", + "httpMethod": "get", + "tag": "assessments", + "typeScriptTag": "assessments", + "description": "Get Assessment Order by id", + "parameters": [ + { + "name": "assessmentOrderId", + "schema": "string", + "required": true, + "description": "unique id of an assessment order", + "example": "ASSESSMENTORDERID" + } + ], + "responses": [ + { + "statusCode": "default", + "description": "" + } + ] + }, + { + "url": "/assessments", + "method": "listByCriteria", + "httpMethod": "get", + "tag": "assessments", + "typeScriptTag": "assessments", + "description": "Get Assessment orders by criteria", + "parameters": [ + { + "name": "limit", + "schema": "integer", + "description": "number of elements to return. max value is 100" + }, + { + "name": "offset", + "schema": "integer", + "description": "number of elements to skip while processing result" + }, + { + "name": "status", + "schema": "string", + "description": "assessment order status; available values: NEW, IN_PROGRESS, REJECTED, COMPLETED" + }, + { + "name": "fromDate", + "schema": "string", + "description": "createDate filter. search will return only orders created after given date. Date format need to comply with ISO8601 format: yyyy-MM-ddTHH:mm:ss.SSSZZ" + }, + { + "name": "toDate", + "schema": "string", + "description": "createDate filter. search will return only orders created before given date. Date format need to comply with ISO8601 format: yyyy-MM-ddTHH:mm:ss.SSSZZ" + }, + { + "name": "sortBy", + "schema": "string", + "description": "sorting criteria. Available options: createDate" + }, + { + "name": "sortDir", + "schema": "string", + "description": "sorting direction. Available options: asc, desc", + "default": "asc" + }, + { + "name": "candidateUuid", + "schema": "string", + "description": "UUID of a candidate. Corresponds to candidate ID used in Customer API" + }, + { + "name": "jobUuid", + "schema": "string", + "description": "UUID of a job. Corresponds to job ID used in Customer API" + } + ], + "responses": [ + { + "statusCode": "default", + "description": "" + } + ] + }, + { + "url": "/assessments", + "method": "createNewOrder", + "httpMethod": "post", + "tag": "assessments", + "typeScriptTag": "assessments", + "description": "insert new Assessment order - end point for testing only - it will not create valid assessment order", + "parameters": [ + { + "name": "status", + "schema": "string", + "description": "" + }, + { + "name": "requestor", + "schema": "object", + "description": "" + }, + { + "name": "candidate", + "schema": "object", + "description": "" + }, + { + "name": "job", + "schema": "object", + "description": "" + }, + { + "name": "company", + "schema": "object", + "description": "" + }, + { + "name": "offer", + "schema": "object", + "description": "" + } + ], + "responses": [ + { + "statusCode": "default", + "description": "" + } + ] + }, + { + "url": "/assessments/{assessmentOrderId}/reject", + "method": "rejectOrder", + "httpMethod": "post", + "tag": "assessments", + "typeScriptTag": "assessments", + "description": "Reject Assessment order", + "parameters": [ + { + "name": "assessmentOrderId", + "schema": "string", + "required": true, + "description": "unique id of an assessment order", + "example": "ASSESSMENTORDERID" + }, + { + "name": "message", + "schema": "string", + "required": true, + "description": "", + "example": "MESSAGE" + }, + { + "name": "messageToCandidate", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "assessmentURL", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "author", + "schema": "object", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "default", + "description": "" + } + ] + }, + { + "url": "/configs", + "method": "getList", + "httpMethod": "get", + "tag": "configs", + "typeScriptTag": "configs", + "description": "Fetch list of vendor configs", + "parameters": [], + "responses": [ + { + "statusCode": "default", + "description": "" + } + ] + }, + { + "url": "/configs", + "method": "addNewConfig", + "httpMethod": "post", + "tag": "configs", + "typeScriptTag": "configs", + "description": "Add new config", + "parameters": [ + { + "name": "id", + "schema": "string", + "required": true, + "description": "", + "example": "ID" + }, + { + "name": "value", + "schema": "string", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "default", + "description": "" + } + ] + }, + { + "url": "/configs/{configId}", + "method": "getByConfigId", + "httpMethod": "get", + "tag": "configs", + "typeScriptTag": "configs", + "description": "Get config for vendor", + "parameters": [ + { + "name": "configId", + "schema": "string", + "required": true, + "description": "unique id of a config entry", + "example": "CONFIGID" + } + ], + "responses": [ + { + "statusCode": "default", + "description": "" + } + ] + }, + { + "url": "/configs/{configId}", + "method": "updateConfigById", + "httpMethod": "post", + "tag": "configs", + "typeScriptTag": "configs", + "description": "Update config", + "parameters": [ + { + "name": "configId", + "schema": "string", + "required": true, + "description": "unique id of a config entry", + "example": "CONFIGID" + }, + { + "name": "id", + "schema": "string", + "required": true, + "description": "", + "example": "ID" + }, + { + "name": "value", + "schema": "string", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "default", + "description": "" + } + ] + }, + { + "url": "/offers/{offerId}", + "method": "getById", + "httpMethod": "get", + "tag": "offers", + "typeScriptTag": "offers", + "description": "Get offer by id", + "parameters": [ + { + "name": "offerId", + "schema": "string", + "required": true, + "description": "unique id of an offer", + "example": "OFFERID" + } + ], + "responses": [ + { + "statusCode": "default", + "description": "" + } + ] + }, + { + "url": "/offers/{offerId}", + "method": "updateOffer", + "httpMethod": "post", + "tag": "offers", + "typeScriptTag": "offers", + "description": "Update offer", + "parameters": [ + { + "name": "offerId", + "schema": "string", + "required": true, + "description": "unique id of an offer", + "example": "OFFERID" + }, + { + "name": "description", + "schema": "string", + "required": true, + "description": "", + "example": "DESCRIPTION" + }, + { + "name": "id", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "createDate", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "lastUpdateDate", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "catalogId", + "schema": "string", + "required": true, + "description": "", + "example": "CATALOGID" + }, + { + "name": "name", + "schema": "string", + "required": true, + "description": "", + "example": "NAME" + }, + { + "name": "category", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "terms", + "schema": "object", + "required": true, + "description": "" + }, + { + "name": "status", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "targetMarket", + "schema": "object", + "required": false, + "description": "" + }, + { + "name": "availability", + "schema": "object", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "default", + "description": "" + } + ] + }, + { + "url": "/offers/{offerId}/submit", + "method": "submitForReview", + "httpMethod": "post", + "tag": "offers", + "typeScriptTag": "offers", + "description": "Submit offer", + "parameters": [ + { + "name": "offerId", + "schema": "string", + "required": true, + "description": "unique id of an offer", + "example": "OFFERID" + } + ], + "responses": [ + { + "statusCode": "default", + "description": "" + } + ] + }, + { + "url": "/offers/{offerId}/withdraw", + "method": "withdrawal", + "httpMethod": "post", + "tag": "offers", + "typeScriptTag": "offers", + "description": "Withdraw offer", + "parameters": [ + { + "name": "offerId", + "schema": "string", + "required": true, + "description": "unique id of an offer", + "example": "OFFERID" + } + ], + "responses": [ + { + "statusCode": "default", + "description": "" + } + ] + }, + { + "url": "/v1/companies/{companyIdentifier}/postings", + "method": "listByCompanyIdentifier", + "httpMethod": "get", + "tag": "postings", + "typeScriptTag": "postings", + "description": "Lists active postings published by given company", + "parameters": [ + { + "name": "acceptLanguage", + "schema": "string", + "description": "Language of translation" + }, + { + "name": "companyIdentifier", + "schema": "string", + "required": true, + "description": "Identifier of a company", + "example": "COMPANYIDENTIFIER" + }, + { + "name": "q", + "schema": "string", + "required": false, + "description": "full-text search query based on a job title, location" + }, + { + "name": "limit", + "schema": "integer", + "required": false, + "description": "number of elements to return. max value is 100" + }, + { + "name": "offset", + "schema": "integer", + "required": false, + "description": "number of elements to skip while processing result" + }, + { + "name": "destination", + "schema": "string", + "required": false, + "description": "Filter indicating which postings to return:\n* **PUBLIC**: response will include ONLY public postings\n* **INTERNAL**: response will include ONLY internal postings\n* **INTERNAL_OR_PUBLIC**: response will include internal postings or public postings, but not both for a single job. If a job has both types of postings, only internal postings will be returned. NOTE: when selected, all postings, internal and public, will be treated as internal. Among other things, this means that screening questions will not be displayed, and candidates will be marked with the EMPLOYEE label.\n" + }, + { + "name": "locationType", + "schema": "string", + "required": false, + "description": "Filter indicating which postings to return:\n* **REMOTE**: response will include ONLY postings with remote location type\n* **ONSITE**: response will include ONLY postings with onsite location type\n* **ANY**: response will include ANY location type\n" + }, + { + "name": "country", + "schema": "string", + "required": false, + "description": "country code filter (part of the location object)" + }, + { + "name": "region", + "schema": "string", + "required": false, + "description": "region filter (part of the location object)" + }, + { + "name": "city", + "schema": "string", + "required": false, + "description": "city filter (part of the location object)" + }, + { + "name": "department", + "schema": "string", + "required": false, + "description": "department filter (department id)" + }, + { + "name": "language", + "schema": "array", + "required": false, + "description": "Job ad language; accepts 2-letter ISO 639-1 language code; multiple codes can be provided, separated by comma (\",\")\nExceptions to the language code ISO format:\n* \"en-GB\" - \"English - English (https://developers.smartrecruiters.com/reference\"\n* \"fr-CA\" - \"French - français (https://developers.smartrecruiters.com/reference\"\n* \"pt-BR\" - \"Portugal - português (https://developers.smartrecruiters.com/reference\"\n* \"pt-PT\" - \"Portugal - português (https://developers.smartrecruiters.com/reference\"\n* \"zh-TW\" - \"Chinese (https://developers.smartrecruiters.com/reference - 中文 (香港)\"\n* \"zh-CN\" - \"Chinese (https://developers.smartrecruiters.com/reference - 中文 (简体)\"\n" + }, + { + "name": "releasedAfter", + "schema": "string", + "required": false, + "description": "Released after filter (https://developers.smartrecruiters.com/reference\nFormat: yyyy-MM-ddTHH:mm:ss.SSSZZ\n" + }, + { + "name": "customField", + "schema": "object", + "required": false, + "description": "Filters postings by custom fields. Multiple custom field values can be provided, separated by comma (\",\").\nFormat: custom_field.CUSTOM_FIELD_ID=CUSTOM_FIELD_VALUE1_ID,CUSTOM_FIELD_VALUE2_ID\n", + "example": { + "custom_field.52d95747e4b0ba7acb9217ea": "23aba1d4-4c81-48f7-9ae2-3ab84ee32a80" + } + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + } + ] + }, + { + "url": "/v1/companies/{companyIdentifier}/postings/{postingId}", + "method": "getByPostingIdOrUuid", + "httpMethod": "get", + "tag": "postings", + "typeScriptTag": "postings", + "description": "Get posting by posting id or uuid for given company", + "parameters": [ + { + "name": "acceptLanguage", + "schema": "string", + "description": "Language of translation" + }, + { + "name": "companyIdentifier", + "schema": "string", + "required": true, + "description": "Identifier of a company", + "example": "COMPANYIDENTIFIER" + }, + { + "name": "postingId", + "schema": "string", + "required": true, + "description": "Posting identifier or uuid", + "example": "POSTINGID" + }, + { + "name": "sourceTypeId", + "schema": "string", + "required": false, + "description": "sourceTypeId can be retrieved using [get /configuration/sources](https://developers.smartrecruiters.com/reference/configurationsourcetypes-1) endpoint. Used together with **sourceId** and **sourceSubTypeId** to add source tracking parameter to **applyUrl**." + }, + { + "name": "sourceSubTypeId", + "schema": "string", + "required": false, + "description": "sourceSubTypeId can be retrieved using [get /configuration/sources](https://developers.smartrecruiters.com/reference/configurationsourcetypes-1) endpoint. Used together with **sourceId** and **sourceTypeId** to add source tracking parameter to **applyUrl**." + }, + { + "name": "sourceId", + "schema": "string", + "required": false, + "description": "sourceId can be retrieved using [get /configuration/sources/{sourceType}/values](https://developers.smartrecruiters.com/reference/configurationsourcevaluesall-1) endpoint. Used together with **sourceTypeId** and **sourceSubTypeId** to add source tracking parameter to **applyUrl**." + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + } + ] + }, + { + "url": "/v1/companies/{companyIdentifier}/departments", + "method": "listDepartmentsForCompany", + "httpMethod": "get", + "tag": "postings", + "typeScriptTag": "postings", + "description": "List departments for given company", + "parameters": [ + { + "name": "acceptLanguage", + "schema": "string", + "description": "Language of translation" + }, + { + "name": "companyIdentifier", + "schema": "string", + "required": true, + "description": "Identifier of a company", + "example": "COMPANYIDENTIFIER" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + } + ] + }, + { + "url": "/files/{reportFileId}/data", + "method": "downloadReportData", + "httpMethod": "get", + "tag": "files", + "typeScriptTag": "files", + "description": "Download report file", + "parameters": [ + { + "name": "reportFileId", + "schema": "string", + "required": true, + "description": "Report file identifier", + "example": "REPORTFILEID" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/files/{reportFileId}", + "method": "getFileDetails", + "httpMethod": "get", + "tag": "files", + "typeScriptTag": "files", + "description": "Get report file", + "parameters": [ + { + "name": "reportFileId", + "schema": "string", + "required": true, + "description": "Report file identifier", + "example": "REPORTFILEID" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/reports/{reportId}/files/recent/data", + "method": "downloadRecentFile", + "httpMethod": "get", + "tag": "reports", + "typeScriptTag": "reports", + "description": "Download most recent report file", + "parameters": [ + { + "name": "ifNoneMatch", + "schema": "string", + "description": "Report file ETag to be compared with the most recent report file" + }, + { + "name": "reportId", + "schema": "string", + "required": true, + "description": "Report identifier", + "example": "REPORTID" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "304", + "description": "Returned when there's no newer report file available." + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/reports/{reportId}/files", + "method": "getReportFiles", + "httpMethod": "get", + "tag": "reports", + "typeScriptTag": "reports", + "description": "Get report files", + "parameters": [ + { + "name": "page", + "schema": "string", + "description": "Opaque page identifier to be returned." + }, + { + "name": "limit", + "schema": "integer", + "description": "Number of entities that should be returned per page.", + "default": 10 + }, + { + "name": "reportId", + "schema": "string", + "required": true, + "description": "Report identifier", + "example": "REPORTID" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/reports/{reportId}/files", + "method": "generateAdhocReportFile", + "httpMethod": "post", + "tag": "reports", + "typeScriptTag": "reports", + "description": "Generate ad-hoc report", + "parameters": [ + { + "name": "reportId", + "schema": "string", + "required": true, + "description": "Report identifier", + "example": "REPORTID" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "409", + "description": "" + } + ] + }, + { + "url": "/reports/{reportId}/files/recent", + "method": "getRecentFile", + "httpMethod": "get", + "tag": "reports", + "typeScriptTag": "reports", + "description": "Get most recent report file", + "parameters": [ + { + "name": "ifNoneMatch", + "schema": "string", + "description": "Report file ETag to be compared with the most recent report file" + }, + { + "name": "reportId", + "schema": "string", + "required": true, + "description": "Report identifier", + "example": "REPORTID" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "304", + "description": "Returned when there's no newer report file available." + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/reports/{reportId}", + "method": "getDetails", + "httpMethod": "get", + "tag": "reports", + "typeScriptTag": "reports", + "description": "Get report", + "parameters": [ + { + "name": "reportId", + "schema": "string", + "required": true, + "description": "Report identifier", + "example": "REPORTID" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "Returned when there is no report with the given ID." + } + ] + }, + { + "url": "/reports", + "method": "listByModificationDate", + "httpMethod": "get", + "tag": "reports", + "typeScriptTag": "reports", + "description": "Get reports", + "parameters": [ + { + "name": "page", + "schema": "string", + "description": "Opaque page identifier to be returned." + }, + { + "name": "limit", + "schema": "integer", + "description": "Number of entities that should be returned per page.", + "default": 10 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + } + ] + }, + { + "url": "/reviews", + "method": "getAllForCandidateJob", + "httpMethod": "get", + "tag": "reviews", + "typeScriptTag": "reviews", + "description": "Retrieves all reviews for specified candidate and job", + "parameters": [ + { + "name": "candidateId", + "schema": "string", + "required": true, + "description": "ID of the candidate", + "example": "CANDIDATEID" + }, + { + "name": "jobId", + "schema": "string", + "required": true, + "description": "ID of the job", + "example": "JOBID" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/reviews", + "method": "createReview", + "httpMethod": "post", + "tag": "reviews", + "typeScriptTag": "reviews", + "description": "Creates a review", + "parameters": [ + { + "name": "reviewerId", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "candidateId", + "schema": "string", + "required": true, + "description": "", + "example": "CANDIDATEID" + }, + { + "name": "jobId", + "schema": "string", + "required": true, + "description": "", + "example": "JOBID" + }, + { + "name": "overallRating", + "schema": "integer", + "required": true, + "description": "", + "example": 0 + }, + { + "name": "comment", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "createdOn", + "schema": "string", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "201", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "422", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/reviews/{reviewId}", + "method": "deleteReviewById", + "httpMethod": "delete", + "tag": "reviews", + "typeScriptTag": "reviews", + "description": "Deletes a review", + "parameters": [ + { + "name": "reviewerId", + "schema": "string", + "required": true, + "description": "ID of the reviewer", + "example": "REVIEWERID" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "Review was deleted" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "422", + "description": "When input validation fails or with codes:\n* **NON_EXISTING_REVIEWER** when reviewer does not exist\n* **INACTIVE_OR_DELETED_REVIEWER** when reviewer is inactive or deleted\n* **REVIEWER_ID_DOES_NOT_MATCH** when reviewer id does not match reviewer id in review\n" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/reviews/{reviewId}", + "method": "getById", + "httpMethod": "get", + "tag": "reviews", + "typeScriptTag": "reviews", + "description": "Retrieves a review", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/reviews/{reviewId}", + "method": "updateReviewById", + "httpMethod": "patch", + "tag": "reviews", + "typeScriptTag": "reviews", + "description": "Updates a review", + "parameters": [ + { + "name": "overallRating", + "schema": "integer", + "required": false, + "description": "" + }, + { + "name": "comment", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "reviewerId", + "schema": "string", + "required": true, + "description": "", + "example": "REVIEWERID" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "Review was updated" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "422", + "description": "When input validation fails or with codes:\n* **INVALID_OVERALL** when invalid overall\n* **NON_EXISTING_REVIEWER** when reviewer does not exist\n* **INACTIVE_OR_DELETED_REVIEWER** when reviewer is inactive or deleted\n* **REVIEWER_ID_DOES_NOT_MATCH** when reviewer id does not match reviewer id in review\n" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/new-hires/{newHireId}", + "method": "getDetails", + "httpMethod": "get", + "tag": "new-hires", + "typeScriptTag": "newHires", + "description": "Returns details for a single New Hire", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/onboarding-processes/{onboardingProcessId}", + "method": "getDetails", + "httpMethod": "get", + "tag": "onboarding-processes", + "typeScriptTag": "onboardingProcesses", + "description": "Returns details of a single Onboarding Process", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/web-form-assignments/{webFormAssignmentId}/form-answers", + "method": "getFormAnswers", + "httpMethod": "get", + "tag": "assignments-submissions", + "typeScriptTag": "assignmentsSubmissions", + "description": "Returns answers submitted for a single Web Form Assignment", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/web-form-assignments/{webFormAssignmentId}/fields-metadata", + "method": "getFieldsMetadata", + "httpMethod": "get", + "tag": "assignments-submissions", + "typeScriptTag": "assignmentsSubmissions", + "description": "Returns metadata for the fields that belong to a single Web Form Assignment", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/fillable-pdf-form-assignments/{fillablePdfFormAssignmentId}/form-answers", + "method": "getFormAnswers", + "httpMethod": "get", + "tag": "assignments-submissions", + "typeScriptTag": "assignmentsSubmissions", + "description": "Returns answers submitted for a single Fillable PDF Form Assignment", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/onboarding-processes/{onboardingProcessId}/assignments", + "method": "getByProcessId", + "httpMethod": "get", + "tag": "assignments", + "typeScriptTag": "assignments", + "description": "Returns Assignments associated with a single Onboarding Process", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/activity-assignments/{activityAssignmentId}/attachments", + "method": "listAttachments", + "httpMethod": "get", + "tag": "assignments-submissions", + "typeScriptTag": "assignmentsSubmissions", + "description": "Returns list of Attachments submitted for a single Activity Assignment", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/activity-assignments/{activityAssignmentId}/attachments/{attachmentId}", + "method": "getSingleAttachment", + "httpMethod": "get", + "tag": "assignments-submissions", + "typeScriptTag": "assignmentsSubmissions", + "description": "Returns single Attachment for specific Activity Assignment", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/users", + "method": "list", + "httpMethod": "get", + "tag": "users", + "typeScriptTag": "users", + "description": "List users of your company", + "parameters": [ + { + "name": "q", + "schema": "string", + "description": "full-text search query based on firstName, lastName, email" + }, + { + "name": "limit", + "schema": "integer", + "description": "number of elements to return. max value is 100", + "default": 100 + }, + { + "name": "offset", + "schema": "integer", + "description": "number of elements to skip while processing result", + "default": 0 + }, + { + "name": "updatedAfter", + "schema": "string", + "description": "ISO8601-formatted time boundaries for the user update time, Format: yyyy-MM-ddTHH:mm:ss.SSSZZ" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "403", + "description": "" + } + ] + }, + { + "url": "/users", + "method": "createNewUser", + "httpMethod": "post", + "tag": "users", + "typeScriptTag": "users", + "description": "Create a new user", + "parameters": [], + "responses": [ + { + "statusCode": "201", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "409", + "description": "" + }, + { + "statusCode": "422", + "description": "" + } + ] + }, + { + "url": "/users/me", + "method": "getDetails", + "httpMethod": "get", + "tag": "users", + "typeScriptTag": "users", + "description": "Get details of my user", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + } + ] + }, + { + "url": "/users/{id}", + "method": "deactivateUser", + "httpMethod": "delete", + "tag": "users", + "typeScriptTag": "users", + "description": "Deactivate a user", + "parameters": [], + "responses": [ + { + "statusCode": "204", + "description": "User successfully deactivated" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/users/{id}", + "method": "getDetails", + "httpMethod": "get", + "tag": "users", + "typeScriptTag": "users", + "description": "Get details of a user with given id", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/users/{id}", + "method": "updateUserById", + "httpMethod": "patch", + "tag": "users", + "typeScriptTag": "users", + "description": "Update a user", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "409", + "description": "" + } + ] + }, + { + "url": "/users/{id}/reset-password", + "method": "sendPasswordResetEmail", + "httpMethod": "post", + "tag": "users", + "typeScriptTag": "users", + "description": "Send a password reset email to a user", + "parameters": [], + "responses": [ + { + "statusCode": "204", + "description": "The password reset email successfully sent" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/users/{id}/activation-email", + "method": "sendActivationEmail", + "httpMethod": "post", + "tag": "users", + "typeScriptTag": "users", + "description": "Send an activation email to a user", + "parameters": [], + "responses": [ + { + "statusCode": "204", + "description": "Activation email successfully sent" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "422", + "description": "" + } + ] + }, + { + "url": "/users/{id}/activation", + "method": "deactivateUserById", + "httpMethod": "delete", + "tag": "users", + "typeScriptTag": "users", + "description": "Deactivate a user", + "parameters": [], + "responses": [ + { + "statusCode": "204", + "description": "User successfully deactivated" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/users/{id}/activation", + "method": "activateUser", + "httpMethod": "put", + "tag": "users", + "typeScriptTag": "users", + "description": "Activate a user", + "parameters": [], + "responses": [ + { + "statusCode": "204", + "description": "User successfully activated" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "409", + "description": "" + } + ] + }, + { + "url": "/users/{id}/avatar", + "method": "updateAvatar", + "httpMethod": "put", + "tag": "users", + "typeScriptTag": "users", + "description": "Update user avatar", + "parameters": [ + { + "name": "file", + "schema": "string", + "required": true, + "description": "", + "example": "FILE" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "Avatar successfully updated" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/system-roles", + "method": "listSystemRoles", + "httpMethod": "get", + "tag": "users", + "typeScriptTag": "users", + "description": "List system roles", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "403", + "description": "" + } + ] + }, + { + "url": "/access-groups", + "method": "listAccessGroups", + "httpMethod": "get", + "tag": "users", + "typeScriptTag": "users", + "description": "List access groups configured in your company", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "403", + "description": "" + } + ] + }, + { + "url": "/access-groups/{accessGroupId}/users/{id}", + "method": "removeFromAccessGroup", + "httpMethod": "delete", + "tag": "users", + "typeScriptTag": "users", + "description": "Remove user from access group", + "parameters": [], + "responses": [ + { + "statusCode": "204", + "description": "User successfully removed from access group" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/access-groups/{accessGroupId}/users", + "method": "assignToAccessGroup", + "httpMethod": "post", + "tag": "users", + "typeScriptTag": "users", + "description": "Assign users to access group", + "parameters": [], + "responses": [ + { + "statusCode": "201", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/subscriptions", + "method": "getWebhookSubscriptions", + "httpMethod": "get", + "tag": "subscriptions", + "typeScriptTag": "subscriptions", + "description": "Retrieve webhook subscriptions.", + "parameters": [ + { + "name": "pageId", + "schema": "string", + "required": false, + "description": "identifier of the next page of subscriptions" + }, + { + "name": "limit", + "schema": "integer", + "description": "number of elements to return", + "default": 10 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "Unauthorized" + }, + { + "statusCode": "403", + "description": "" + } + ] + }, + { + "url": "/subscriptions", + "method": "subscribeToWebhook", + "httpMethod": "post", + "tag": "subscriptions", + "typeScriptTag": "subscriptions", + "description": "Subscribe to a webhook.", + "parameters": [ + { + "name": "callbackUrl", + "schema": "string", + "required": true, + "description": "", + "example": "https://server.com/send/callback/here" + }, + { + "name": "events", + "schema": "array", + "required": true, + "description": "" + }, + { + "name": "alertingEmailAddress", + "schema": "string", + "required": false, + "description": "", + "example": "webhook.alerts@domain.com" + }, + { + "name": "callbackAuthentication", + "schema": "object", + "required": false, + "description": "", + "example": { + "type": "header", + "headerName": "X-TOKEN", + "headerValue": "J?7HSgUKm7!MPm+EKm^P4BwW4ywRRRVu" + } + } + ], + "responses": [ + { + "statusCode": "201", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "422", + "description": "" + } + ] + }, + { + "url": "/subscriptions/{id}", + "method": "deleteWebhookSubscription", + "httpMethod": "delete", + "tag": "subscriptions", + "typeScriptTag": "subscriptions", + "description": "Delete webhook subscription.", + "parameters": [], + "responses": [ + { + "statusCode": "204", + "description": "Webhook subscription deleted." + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/subscriptions/{id}", + "method": "getSingleWebhook", + "httpMethod": "get", + "tag": "subscriptions", + "typeScriptTag": "subscriptions", + "description": "Retrieve single webhook subscription.", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/subscriptions/{id}/activation", + "method": "activateWebhookSubscription", + "httpMethod": "put", + "tag": "subscriptions", + "typeScriptTag": "subscriptions", + "description": "Activate webhook subscription.", + "parameters": [], + "responses": [ + { + "statusCode": "204", + "description": "Subscription activated." + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "409", + "description": "" + }, + { + "statusCode": "424", + "description": "" + } + ] + }, + { + "url": "/subscriptions/{id}/secret-key", + "method": "getSecretKey", + "httpMethod": "get", + "tag": "subscriptions", + "typeScriptTag": "subscriptions", + "description": "Retrieve subscription secret key", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/subscriptions/{id}/secret-key", + "method": "generateSecretKey", + "httpMethod": "post", + "tag": "subscriptions", + "typeScriptTag": "subscriptions", + "description": "Generate secret key for a webhook subscription.", + "parameters": [], + "responses": [ + { + "statusCode": "201", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/subscriptions/{id}/callbacks-log", + "method": "getCallbackDetails", + "httpMethod": "get", + "tag": "subscriptions", + "typeScriptTag": "subscriptions", + "description": "Retrieve callback request details starting from newest.", + "parameters": [ + { + "name": "id", + "schema": "string", + "required": true, + "description": "subscription identifier", + "example": "ID" + }, + { + "name": "pageId", + "schema": "string", + "required": false, + "description": "identifier of the next page of subscriptions" + }, + { + "name": "limit", + "schema": "integer", + "description": "number of elements to return", + "default": 10 + }, + { + "name": "callbackStatus", + "schema": "string", + "description": "status of callback, whan absent all statuses will be returned" + }, + { + "name": "after", + "schema": "string", + "description": "Requests sent after timestamp. Min value is 30 days ago. Format ISO8601: yyyy-MM-ddTHH:mm:ss.SSSZZ\n" + }, + { + "name": "before", + "schema": "string", + "description": "Requests sent before timestamp. Min value is 30 days ago. Format ISO8601: yyyy-MM-ddTHH:mm:ss.SSSZZ\n" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + } + ] + } + ], + "repositoryDescription": "SmartRecruiters is a California-based cloud platform that offers solutions including talent sourcing, recruitment and applicant tracking for businesses. SmartRecruiters's {language} SDK generated by Konfig (https://konfigthis.com/).", + "logo": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/smartrecruiters/logo.png", + "openApiRaw": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/smartrecruiters/openapi.yaml", + "openApiGitHubUi": "https://github.com/konfig-sdks/openapi-examples/tree/HEAD/smartrecruiters/openapi.yaml", + "previewLinkImage": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/smartrecruiters/imagePreview.jpg", + "faviconUrl": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/smartrecruiters/favicon.png", + "clientNameCamelCase": "smartRecruiters", + "lastUpdated": "2024-03-28T00:30:05.996Z", + "typescriptSdkUsageCode": "import { SmartRecruiters } from 'smart-recruiters-typescript-sdk';\n\nconst smartRecruiters = new SmartRecruiters({\n key: \"X_SMARTTOKEN\",\n clientId: \"CLIENT_ID\",\n clientSecret: \"CLIENT_SECRET\",\n redirectUri: \"REDIRECT_URI\",\n // clientId: \"CLIENT_ID\"\n // clientSecret: \"CLIENT_SECRET\"\n // clientId: \"CLIENT_ID\"\n // clientSecret: \"CLIENT_SECRET\"\n})", + "typescriptSdkFirstRequestCode": "// Create a New Candidate Application\nconst createNewCandidateApplicationResponse = smartRecruiters.applicationApi.createNewCandidateApplication({\n uuid: \"UUID\"\n firstName: \"FIRSTNAME\"\n lastName: \"LASTNAME\"\n email: \"EMAIL\"\n})", + "fixedSpecFileName": "smart-recruiters-fixed-spec.yaml" +} \ No newline at end of file diff --git a/sdks/db/spec-data/appwrite.io_client_0.9.3.json b/sdks/db/spec-data/appwrite.io_client_0.9.3.json index e8cc697f3..34a55d41e 100644 --- a/sdks/db/spec-data/appwrite.io_client_0.9.3.json +++ b/sdks/db/spec-data/appwrite.io_client_0.9.3.json @@ -44,5 +44,5 @@ "contactUrl": "https://appwrite.io/support", "contactEmail": "team@appwrite.io", "difficultyScore": 113.25, - "difficulty": "Medium" + "difficulty": "Easy" } \ No newline at end of file diff --git a/sdks/db/spec-data/from-custom-request_smartrecruiters.com.json b/sdks/db/spec-data/from-custom-request_smartrecruiters.com.json new file mode 100644 index 000000000..a53a19bea --- /dev/null +++ b/sdks/db/spec-data/from-custom-request_smartrecruiters.com.json @@ -0,0 +1,96 @@ +{ + "securitySchemes": { + "key": { + "type": "apiKey", + "name": "x-smarttoken", + "in": "header" + }, + "oauth": { + "type": "oauth2", + "flows": { + "authorizationCode": { + "authorizationUrl": "https://www.smartrecruiters.com/identity/oauth/allow", + "tokenUrl": "https://api.smartrecruiters.com/identity/oauth/token", + "scopes": { + "approvals_read": "Access Approval Requests", + "approvals_create": "Create Approval Requests", + "approvals_decide": "Approve or Reject Approval Requests", + "assessment_orders_read": "Access Assessment Orders", + "audit_events_read": "Access Audit Events", + "candidates_read": "Access Candidates", + "candidates_create": "Create Candidates", + "candidates_offers_read": "Access Offer Terms", + "candidates_manage": "Manage Candidate Status and Properties", + "candidate_status_read": "Access Candidate's status", + "configuration_read": "Access Company Settings", + "configuration_manage": "Manage Company Settings", + "company_read": "Access Company Information", + "interviews_read": "Access Interviews and Timeslots", + "interviews_write": "Create, update and delete Interviews and Timeslots", + "interview_types_read": "Access Interview Types", + "interview_types_write": "Create and delete Interview Types", + "jobs_read": "Access Jobs", + "jobs_manage": "Manage jobs", + "jobs_publications_manage": "Publish Jobs", + "job_applications_read": "Access Job Applications", + "messages_write": "Message Users", + "messages_manage": "Manage Messages", + "messages_read": "Access Messages", + "reporting_read": "Get analytics reports and download report files", + "reporting_write": "Manage/execute analytics reports", + "reviews_read": "Access Reviews", + "reviews_write": "Create, update and delete Reviews", + "users_read": "Access Users", + "user_me_read": "Access information about my user", + "users_manage": "Manage Users", + "webhooks_read": "View webhook subscriptions", + "webhooks_write": "Create new webhook subscription", + "webhooks_delete": "Delete webhook subscription", + "webhooks_manage": "View, create and delete webhook subscriptions" + } + } + } + }, + "oauth2_master": { + "type": "oauth2", + "flows": { + "clientCredentials": { + "tokenUrl": "https://api.smartrecruiters.com/identity/oauth/token", + "scopes": { + "partner_configuration_manage": "Allows modification of global configuration and creation of customer level integrations" + } + } + } + }, + "oauth2": { + "type": "oauth2", + "flows": { + "clientCredentials": { + "tokenUrl": "https://www.partner.com/identity/oauth/token", + "scopes": { + "jobs_read": "Allows reading job details", + "candidates_read": "Allows reading candidate details", + "assessment_result_manage": "Allows managing assessment result", + "packages_view": "Allows reading list of assessment packages", + "orders_manage": "Allows creating orders" + } + } + } + } + }, + "apiBaseUrl": "https://api.smartrecruiters.com/webhooks-api/v201907", + "apiVersion": "201910.4", + "apiDescription": "SmartOnboard Public API", + "apiTitle": "Webhooks", + "endpoints": 164, + "sdkMethods": 317, + "schemas": 352, + "parameters": 528, + "contactUrl": "https://developers.smartrecruiters.com", + "originalCustomRequest": { + "lambda": true + }, + "customRequestSpecFilename": "smartrecruiters.com.yaml", + "difficultyScore": 625, + "difficulty": "Very Hard" +} \ No newline at end of file diff --git a/sdks/publish.yaml b/sdks/publish.yaml index 014083bc4..e0601330b 100644 --- a/sdks/publish.yaml +++ b/sdks/publish.yaml @@ -6246,3 +6246,19 @@ publish: serviceName: false sdkName: wink-{language}-sdk clientName: Wink + from-custom-request_smartrecruiters.com: + homepage: smartrecruiters.com + company: SmartRecruiters + developerDocumentation: developers.smartrecruiters.com/reference + apiStatusUrls: inherit + metaDescription: >- + SmartRecruiters is a California-based cloud platform that offers solutions + including talent sourcing, recruitment and applicant tracking for + businesses. + categories: + - recruiting + - hr + - applicant_tracking + serviceName: false + sdkName: smart-recruiters-{language}-sdk + clientName: SmartRecruiters diff --git a/sdks/src/collect-from-custom-requests.ts b/sdks/src/collect-from-custom-requests.ts index 238ea8dc0..fd4ebc7ee 100644 --- a/sdks/src/collect-from-custom-requests.ts +++ b/sdks/src/collect-from-custom-requests.ts @@ -2029,6 +2029,14 @@ const customRequests: Record = { url: "https://general-api.ivs-apps.com/api/swagger.json", apiBaseUrl: "https://api.interviewstream.com/", }, + "smartrecruiters.com": { + lambda: async () => { + const urls = await collectEndpointsFromReadme({ + url: "https://developers.smartrecruiters.com/reference", + }); + return downloadOpenApiSpecFromReadme({ urls }); + }, + }, "currencyalliance.com": { lambda: async ({ browser }) => { return downloadOpenApiSpecFromRedoclyEmbedded({ @@ -2067,8 +2075,8 @@ const customRequests: Record = { }, "wink.travel": { type: "GET", - url: "https://api.wink.travel/v3/api-docs/affiliate" - } + url: "https://api.wink.travel/v3/api-docs/affiliate", + }, }; async function downloadOpenApiSpecFromMintlify({