Saatja: Triinu Leppik <
[email protected]>
Saadetud: 30.08.2022 16:06
Adressaat: RAM Info <
[email protected]>
Teema: Küsimus avalike konkursside veebilehe ja selle võimaluste kohta
Tere!Olen Triinu värbamistarkvarast Recrur ning pöördun teie poole
küsimusega seoses avalike konkursside veebilehega (). Nimelt on meie
kliendiks Kaitseressursside Amet, kes loob kõik enda töökuulutused
Recruris (ja postitab meie kaudu ka ja CVKeskuse keskkonda) ning nad
sooviksid oma tööpakkumisi otse Recrurist ka avalike konkursside lehele
postitada. Meie poolt on lahenduseks pakkuda Recrur API, kuid see eeldaks
teiepoolset arendust, et see veebileht oskaks kuvada ka Recruri kaudu
tulnud tööpakkumisi. Kas teie poolt on valmidus veebilehele teha selline
lisaarendus, et ta toetaks ka Recrur kaudu tulnud töökuulutuste kuvamist?
Lisan manusesse Recrur API tehnilise kirjelduse ning olen valmis vastama
ka tekkivatele lisaküsimustele. Kui pöördusin vale e-maili poole, siis
palun edastage mulle kontakt, kelle poole selliste küsimustega peaks
pöörduma.Tagasisidet ootama jäädes--
Triinu LeppikProduct Owner/Analystskype: triinutmbrgemail: Recrur
Services OÜ ee
API: Recrur Job Integrations
Overview of functionality
Recrur Job Integrations API ("Jobs API") will provide data of active, published jobs that are ongoing in Recrur - as published Job Ads. For these
published jobs, Recrur will accept potential incoming candidates, associated with Recrur-provided unique identifiers of the jobs - eg, Job
Applications - which shall contain data of the applied person(s).
Recrur Jobs API is a secured, audited, centrally coordinated web-service (internet data exchange API), which is exposed to authenticated
requests from external systems of Recrur Integration Partners, who need to retrieve and provide information regarding the lifecycle changes of all
job offerings and management processes, governed and managed within the Recrur IS (information system).
Job portals and / or its subsidiary companies will be the integration Partner(s) of Recrur Jobs API, among other cooperation partners - for the
following specific purposes
1. Partner will authenticate against Recrur API with pre-provided username and password (portal-specific logins), before issuing data
exchange. Secure time-constrained token will be provided in response, which the authenticated Partners' system shall then use to issue
data exchange.
2. Partner performs a token-authenticated request for published, active Job Ads targeted for that specific portal - and will receive list of the
active job ads as response, from Recrur Jobs API.
3. Partner performs a token-authenticated data submit request, containing any new applications of persons to any of the active job ads by
their unique references, which were previously published from Recrur using the prior described data exchange.
Users of Recrur can publish Recrur jobs as Job Ads, into select Partners (company sites, job portals, companies internal HR mgmt systems) -
During publishing, users specify the target Partners, which can access the Job Ad, after it's published. Eg, user can choose 1...n of them.
Each Partner portal will have their own Recrur API Partner Account (username/password), that they use to authenticate and exchange
data with Recrur Jobs API.
Aims and principles of Job Integrations web service, for Partner advantages
Centralized, integral webservice for all Partners of Recrur - covering the whole spectrum of information and its changes across entire
lifecycle of job offerings, which are centrally managed and held within Recrur. This includes - details of ongoing job offering, published
job ads, candidates / personal data, applications to the ongoing jobs, lifecycle phases, etc.
Secure and unified way of consolidating all that information exchange - regarding the above described lifecycle - into a straightforward,
reliable and centralized data exchange interface - for all all Recrur cooperation Partners alike.
Enable and ensure the most highly-maintainable and low-risk, centrally available solution for all Partners - which would minimize Partner
IT-exposure risks, auditing / logging overheads, and avoid overheads of required infrastructure and IT-maintenance of any opposite open
services at Partner's side.
Assure thorough operational detection of data integrity violations, detailed cause-effect logging, structured error-handling and informative
responses for queries performed by Partners' systems
Maintain maximum backtracking and auditing capability via full integrations traffic logs, recording of requests timings, history of
performed operations as result of data queries, bookkeeping of new / changed data objects along with error conditions and messages,
etc.
Technical overview
Recrur Jobs API is a REST-ful Web data API. Exchanged data structures will be in JSON format.
Partners server(s) shall implement the functionality of Recrur Jobs API consumer.
Partners systems will make periodic, or event-driven, authorized requests to Recrur Jobs API - and will process received / manage jobs and
applications data for Partner's portal(s), as required for Partner's purposes.
Recrur Jobs API will output and accept data in uniform JSON format, according to data format specifications of the API.
API Servers:
Test: https://api-test.recrur.com/
Live: https://api.recrur.com/
API authentication and accounts
Recrur Jobs API will provide a JWT (JSON Web-token) based authentication scheme.
In this, Integration Partner systems send an initial login request first, using its pre-designated username/password combination. Eg, Partner's one
site (e.g. Estonia) will use different set of login credentials, from Partner's others sites (e.g. Latvia, Lithuania).
Sample request:
<HEADER> Content-Type: application/json
POST https://<recrur-api-server>/auth/
Payload:
{
"username": "<username>",
"password": "<password>"
}
Partner will receive a unique JWT authentication-token, as result of successful authentication. Unauthorized requests, or failed authentication
requests will result in 403 Forbidden responses.
Sample response:
Response: {
"token" : "<JWT Bearer authentication-token>"
}
Curl example:
#Request:
curl -d '{"username":"<username>", "password":"<password>"}' -H
"Content-Type: application/json" -X POST https://<recrur-api-server>
/auth
#Response
{"token":"eyJhbGciOiJIUzUxMiJ9.
eyJzdWIiOiJUYW1yb19MYW5kaW5nIiwiZXhwIjoxNTU2Nzk1MTg0LCJpYXQiOjE1NTY3OTE1
ODR9.080Dilts7dVTYzsDDf2-
MPHWb9Ux7JtNPkHyCqQEqWOHiEzduPwVmQ7L7wEBANWI8EQAnFsjGjTzVsp7MBooNA"}
Requests
1. To receive published job ads from Recrur API:
Partner's portal performs a HTTP GET-request to Recrur Jobs REST-API - and will receive list of data structures representing detailed
information of all the active, published job ads, from Recrur.
Sample request:
<HEADER> Authorization: Bearer <authentication-token>
<HEADER> Content-Type: application/json
GET https://<recrur-api-server>/job/v1/ads
Sample response (for Job Ad published as an IMAGE):
{
"jobAds": [
{
"id": "33",
"type": "IMAGE",
"status": "ACTIVE",
"owner": {
"partnerAccountUsername": "telecom-username",
"name": "Global Telecom Corporation, Ltd"
},
"position": {
"title": "Senior Management Executive"
},
"startDate": "2018-11-15T08:00:00Z",
"endDate": "2019-01-15T12:50:00Z",
"imageUrl": "https://<recrur-api-server>/images/jobad
/273523.jpg",
"logoUrl": "https://<recrur-api-server>/logos/jobad
/9484729.jpg",
"videoUrl": "https://www.youtube.com/watch?v=puT_HmM8YdQ",
"jobAdUrl": "https://<recrur-api-server>/public/job-ad
/...",
"location": {
"country": "Latvia",
"region": "Riga",
"town": "Jurmala",
"details": "Jurmala ielas 33/6"
},
"contactPerson": {
"name": "Juri Gagarin",
"email": "
[email protected]",
"visible": true
},
"salary": {
"period": "MONTH",
"from": 123.45,
"to": 5678.99,
"type": "GROSS",
"currency": "EUR"
},
"companyDescription": "This is nice company",
"language": "ET",
"categories": [
"TELECOMMUNICATIONS"
],
"workingTime": "FULL_TIME",
"contacts": [
{
"type": "WEBSITE",
"value": "wwww.ourwebsite.com"
}
]
"updatedDate": "2018-11-30T21:24:45.966Z"
}
}
//, ...{ other jobAds }
]
}
Restrictions: As a picture
2. To submit data of new job applications to Recrur API, along with data of persons who applied to the published jobs of Recrur.
Partner's portal performs a HTTP POST-request to Recrur Jobs REST-API, submitting list of data structures representing "Applications" - facts
that a person has applied as candidate, for job ad which was published from Recrur.
Sample request:
<HEADER> Authorization: Bearer <authentication-token>
<HEADER> Content-Type: application/json
POST https://<recrur-api-server>/application/v1/
Payload:
{
"jobs": [
{
"jobId": "33",
"newApplicants": [
{
"partnerUserId" : "id28",
"partnerApplicantId" : "applicant28",
"firstName" : "Jack",
"lastName" : "Twentyeight",
"email" : "
[email protected]",
"lastTimeUpdated" : "2019-01-15T11:01:05Z"
},
{
"partnerApplicantId": "applicant-2",
"firstName": "applicant2 firstName",
"lastName": "applicant2 lastName",
"lastTimeUpdated" : "2019-01-15T11:01:05Z"
},
{
"partnerApplicantId": "applicant-3",
"firstName": "applicant3 firstName",
"lastName": "applicant3 lastName",
"email": "a@a",
"lastTimeUpdated" : "2019-01-15T11:01:05Z"
},
{
"partnerApplicantId": "applicant-4",
"firstName": "applicant4-firstName",
"lastName": "applicant4-lastName",
"email": "
[email protected]",
"lastTimeUpdated" : "2019-01-15T11:01:05Z",
"phoneNumber": "+37258136465",
"city": "Tallinn",
"country": "Estonia",
"motLetter": "Hello!\nI am very motivated, please hire me!"
"documents": [
{
"url" : "https://<fileserver>/file/url
/path" // Response must contain "Content-Disposition" header with
filename
},
{
"url" : "https://<fileserver>/file/url
/path" // Response must contain "Content-Disposition" header with
filename
}
]
}
]
},
{
"jobId": "44",
"allApplicantIds": [
"existing-applicant-55",
"existing-applicant-66",
"applicant-249",
"applicant-479"
],
"newApplicants": [
{
"partnerApplicantId": "applicant-249",
"firstName": "John",
"lastName": "Doe",
"lastTimeUpdated" : "2019-01-15T11:01:05Z"
},
{
"partnerApplicantId": "applicant-479",
"firstName": "Jane",
"lastName": "Doe",
"lastTimeUpdated" : "2019-01-15T11:01:05Z"
}
]
}
]
}
Sample response:
{
"status":"SUCCESS",
"applicants":[
{
"jobId":"33",
"partnerApplicantId":"applicant-1",
"status":"ERROR",
"description":{
"lastName":"must not be empty"
}
},
{
"jobId":"33",
"partnerApplicantId":"applicant-2",
"status":"ERROR",
"description":{
"firstName":"must match \"^([\\pL|U|u|A|a|O|o|O|o|S|s|Z|z|\\
(|\\)]+[ '-]?)+$\"",
"lastName":"must match \"^([\\pL|U|u|A|a|O|o|O|o|S|s|Z|z|\\
(|\\)]+[ '-]?)+$\""
}
},
{
"jobId":"33",
"partnerApplicantId":"applicant-3",
"status":"ERROR",
"description":{
"email":"must match \"^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.
[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}
\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$\""
}
},
{
"jobId":"33",
"partnerApplicantId":"applicant-4",
"status":"SUCCESS",
"description":{ }
},
{
"jobId":"44",
"partnerApplicantId":"applicant-249",
"status":"ERROR",
"description":{
"partnerApplicantId":"must not be empty",
"firstName":"must match \"^([\\pL|U|u|A|a|O|o|O|o|S|s|Z|z|\\
(|\\)]+[ '-]?)+$\"",
"lastName":"must match \"^([\\pL|U|u|A|a|O|o|O|o|S|s|Z|z|\\
(|\\)]+[ '-]?)+$\"",
"jobId":"Job not found; "
}
},
{
"jobId":"44",
"partnerApplicantId":"applicant-479",
"status":"ERROR",
"description":{
"lastName":"must match \"^([\\pL|U|u|A|a|O|o|O|o|S|s|Z|z|\\
(|\\)]+[ '-]?)+$\"",
"firstName":"must match \"^([\\pL|U|u|A|a|O|o|O|o|S|s|Z|z|\\
(|\\)]+[ '-]?)+$\"",
"jobId":"Job not found; "
}
},
{
"jobId":"33",
"partnerApplicantId":"existing-applicant-12",
"status":"MISSING",
"description": { }
}
],
"requestId":81
}