Download OpenAPI specification:Download
The Skill Engine API is your single stop for continuous skill tracking, matching, learning management and strategic insights. This API specification describes how to augment your existing data sources with skills to build your workforce of tomorrow.
The Skill Engine API uses OAuth2 for authentication. You'll receive a
client_id
, client_secret
, audience
and tenant
from TechWolf to request
an Authorization token at https://techwolf.eu.auth0.com/oauth/token
with
grant_type client_credentials
.
Authorization tokens are limited and requesting a new token requires an HTTP request
to the token endpoint, slowing down requests. So if you're not using a standard OAuth2
client, make sure to cache this token and reuse it until it expires. The expiry is
returned by Auth0 (and also encoded in the token). More information about OAuth2
can be found here.
An example request is as follows:
curl -X POST 'https://techwolf.eu.auth0.com/oauth/token' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{"client_id": "abcd12317icwFq2x3f4v4BZlQ2sB5q2i2E",
"client_secret": "abcd1234JViv17icwFq2x3f4v4BZlQ2sB5q2i2E",
"audience": "eu3.techwolf.ai",
"grant_type": "client_credentials",
"tenant": "company_xyz"}'
The response contains the following attributes:
access_token
: the token that is to be used in the Authorization
header
of subsequent API callsexpires_in
: lifetime of the tokenscope
: access permissions of the tokentoken_type
: default Bearer
Example response can be found below:
{
"access_token": "eyJhbGciOiJSUzI0I0seiEw",
"expires_in": 10800,
"scope": "read write"
"token_type": "Bearer"
}
A list of the supported scopes can be found below:
read
: Grants read accesswrite
: Grants write accessread_reports
: Grants read access to reports (only aggregated info)The token needs to be added in the Authorization header of the subsequent API
calls, in the following format Authorization: Bearer {access_token}
. To verify
if your token works, you can retrieve the version of your tenant via the
/version
endpoint:
curl -X GET '[server-url]/version' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJSUzI0I0seiEw'
Want to Know More? More information about the authentication process with OAuth2 can be found on the Auth0 website.
The SkillEngine API is a date-based versioned API system, such that each integrator interacts with a certain version of our product. To know your own version, you can call the version-endpoint (description can be found below).
Your version is set by us at the time your tenant is created. This version controls how your API will behave (in terms of supported parameters, response formats, etc.).
As it is possible that we introduce breaking changes in future updates that may break your code, we will not update your version unless you specifically request this. Breaking changes will always be released under a new date and can be tracked in the documentation below.
Non-breaking changes, on the other hand, will be supported by your API, ** regardless of your version**. An overview can also be found below.
In case you want to test a specific version of the API, e.g. when switching
versions, you can add the header X-API-Version
to your requests. The value of
this header is the version of the API you want to use, for example 2021-03-19
.
Finally, when an endpoint is marked with
an tag, this means
that it is "in beta"
Please note that these endpoints can undergo breaking changes without any
notice or promises on backwards compatibility. You should not use them in
production.
The list below gives a sorted overview of non-breaking changes to the SkillEngine API. These changes are immediately available to you, will be supported by your API, regardless of your version.
/employees/{employee_external_id}/skill_events/{skill_event_external_id}
endpoint to support updating an Employee's Skill Event.job_architecture/jobs
and
job_architecture/job_families
endpoints respectively.job_architecture/job_families/{job_family_external_id}/profile_data
and
job_architecture/jobs/{job_external_id}/profile_data
endpoints
respectively.custom_property_is_in_list
filter to
POST employees/{employee_external_id}/recommended_courses
.property_value
and assigned_position
fields of an employee to
the Skill Cluster Adoption report
(reports/employees/skill_cluster_adoption
).GET job_architecture/jobs/{job_external_id}/skill_profile
and
GET job_architecture/job_families/{job_family_external_id}/skill_profile
endpointsmatch_feedback
option for the include
parameter of the
/employees/{employee_external_id}/matching_vacancies
and
/vacancies/{vacancy_external_id}/matching_employees
endpoints, which
includes feedback given to a match in the result if applicable.custom_properties
include option when
sending to the GET job_architecture/jobs/{job_external_id}
and
GET job_architecture/job_families/{job_family_external_id}
endpoints./job_architecture/jobs/{job_external_id}/profile_data/{profile_data_external_id}
and Update
/job_architecture/job_families/{job_family_external_id}/profile_data/{profile_data_external_id}
endpoints to support updating Job Profile Data and Job Family Profile Data.job_id
at
POST /employees/{employee_external_id}/skill_events
and
PATCH /employees/{employee_external_id}/skill_events/{skill_event_external_id}
respectively/employees/{external_id}/matching_vacancies
and
/vacancies/{external_id}/matching_employees
./reports/succession_risk
endpoint.rejected_skills
include option to the
POST /export/employees/skill_clusters
endpoint.course_id
competency_type
in GET /competencies
and
GET /competencies/{external_id}
./reports/replacement_risk
endpoint./entity_type/{external_id}/skill_profile
with response_format=competencies
now return skill information.custom_property_list_overlap
filter for Employee and Vacancy matching.GET vacancies/{vacancy_external_id}/metrics/fillability
endpoint,
which calculates the fillability metric of a Vacancy. The fillability is
influenced by the number of matching Employees and the number of Vacancies
that can be filled by those Vacancies. More matching Employees will result
in a higher fillability, and more matching Vacancies will result in a lower
fillability.POST vacancies/{vacancy_external_id}/metrics/fillability
endpoint
which allows for filtering the used entities on maximal allowed distance and
custom properties, and assigning weights to the different factors used in
the fillability calculation.exclude_match_feedback
filter to
POST employees/{employee_external_id}/recommended_courses
and
POST employees/{employee_external_id}/matching_vacancies
DELETE
endpoints to
employees/{employee_external_id}/vacancies/{vacancy_external_id}/match_feedback
and
employees/{employee_external_id}/courses/{course_external_id}/match_feedback
include=competencies
query parameter to
vacancies/{vacancy_external_id}/matching_employees
.include
query parameter for the
employees/{employee_external_id}/similar
endpoint. Possible values are:
entity
, competencies
and custom_properties
.validation_state
to skills returned from
GET employees/{employee_external_id}/skill_profile
endpoint in list
and
competency
format.validation_state
to skills returned from
POST export/employees/competencies
endpoint.exclude_match_feedback
filter to the employees/search
and
vacancies/search
endpoints.related_skills
to include
in POST export/employees/competencies
endpoint.proficiency_level
to a competency in the body is no longer
required when sending feedback via PUT
or PATCH
to
/employees/{employee_external_id}/skill_profile?feedback_format=competencies
score_breakdown
option for the include
parameter of the
/employees/{employee_external_id}/matching_vacancies
and
/vacancies/{vacancy_external_id}/matching_employees
endpoints, which
includes a breakdown of the contribution of all input weights to the total
match score in the response body.skill_notes
event type./reports/employees/competency_adoption
endpoint.POST employees/{employee_external_id}/metrics/employability
endpoint
which allows for filtering the used entities on maximal allowed distance and
custom properties, and assigning weights to the different factors used in
the calculation.PATCH
endpoint to vacancies/{external_id}/skill_profile
,
occupations/{external_id}/skill_profile
and
courses/{external_id}/skill_profile
.include=relevant_experience
query parameter to
employees/{employee_external_id}/matching_vacancies
and
vacancies/{vacancy_external_id}/matching_employees
.LocationAddress
inputs, city
can be used instead of postal_code
now, making one of them required instead of having postal_code
required./entity_type/{ID}/skill_profile
with
response_format=competencies
now return skill category information.neq
) to the custom_property
filter.sources
in the /export/employees/competencies
endpoint, to be able
to track from which skill events the given competencies originate from.include
query parameter to
vacancies/{vacancy_external_id}/matching_employees
to allow retrieving
employee information without extra calls.include=location
query parameter option to
employees/{employee_external_id}/matching_vacancies
validation_state
field to the /export/employees/competencies
response. Indicating whether the competencies linked to employees are
already validated by a manager or employee or still suggested.POST /competencies
and
PATCH /competencies/{external_id}
endpoints to change the category of a
competency.last_updated
filter for Employee and Vacancy matching.POST /export/employees/competencies
endpoint for
extracting employee competencies and skills from the API.GET /competencies/{external_id}/skill_profile
endpoint
returns skill profiles for clients who use a Taxonomy managed by TechWolf.project
and certificate
Skill Events.working_history
, education_history
, and
resume_document
Skill Events.feedback
and goal
Skill Events.include
query parameter to
employees/{employee_external_id}/recommended_courses
to allow retrieving
course information without extra calls./employees/{employee_external_id}/skill_events/{skill_event_external_id}
endpoint to support removing an Employee's Skill Event from the API./employees/{employee_external_id}/skill_events
endpoint to support
fetching an Employee's Skill Events of a specified type in the API. The only
allowed event type is a learning_event
./employees/{employee_external_id}/skill_events
endpoint to
support the creation of Skill Events in the API. The only allowed event type
is a learning_event
./employees/{employee_external_id}/recommended_courses
endpoint,
returning the recommended Courses to improve an Employee's skill profile.custom_property_contains
, custom_property_contains_element
,
custom_property_is_in
and custom_property_is_in_list
configurations.
Match scores are increased when the applied condition on the matching
entities' specified custom property checks out.language
weight configurations.
Match scores are increased when the matching entities' language levels fall
between a range of the source entity language levels.explained
response format now return
additional category information when the explained response format is
requested./entity_type/{ID}/skill_profile
now
support response_format=categories
and thereby return skill category
information./skills/search
now returns skill category
information.de
) language.language=de
query parameter./employees/{employee_external_id}/vacancies/{vacancy_external_id}/match
endpoint with response_format=explained
query parameter now returns the
body with missing skills included under the missing_skills
key./companies/{external_id}/nace
endpoint./reports/reskilling_and_deployment
endpoint.score_min_threshold
.external_id_is_in_list
filter is now supported for the Job Matching
and external Company Matching endpoints. Additionally, this filter is also
supported for the Search and Similar endpoints of Employee, Vacancy, and
external Company.language
query parameter, to
indicate the language of the input text.companies/:external_id/desired_functions
now supports the PUT
method.
Calling this method replaces all existing desired function vacancies with
the new set.score_min_threshold
.max_geo_distance
field on Employee entities was deprecated.max_geo_distance
field on Employee entities.companies/{external_id}/desired_functions
endpoint.employees/{external_id}/matching_vacancies
and
vacancies/{external_id}/matching_employees
.request_format=free_text
query parameter on the
/companies/{external_id}/desired_functions
endpoint.desired_functions
&
non_desired_functions
attributes./vacancies/search
and /companies/search
./employees/search
, /vacancies/search
and
/companies/search
.custom_property_contains_element
filter. Entities will not be filtered out
if they contain at least one of the provided values in the list custom
property.custom_property
filter. If no operator is specified, the filter defaults to the equals
operator.employees
,vacancies
and companies
.employees
,vacancies
and companies
.null
value for optional fields during creation and
updating of all entities. Passing the null
value during an update will
unset the entity's attribute. Objects will be unset as null
, arrays as the
empty array []
and strings as the empty string ''
.employees/{external_id}/matching_companies
and
companies/{external_id}/matching_employees
. This will be used to filter
out entities that do not need to be considered during matching.employees/{external_id}/matching_companies
and
companies/{external_id}/matching_employees
. The weights can override some
default weights during matching (e.g. desired functions boost)./employees/search
./vacancies
and attribute company
./companies/*
.active
.
When this is field has the value False
, the Vacancy will not be used for
matching./companies/{external_id}/matching_employees
./employees/{external_id}/matching_companies
./companies/{external_id}/desired_functions
.last_updated
upon entity retrieval.employees/{external_id}/matching_vacancies
and
vacancies/{external_id}/matching_employees
. This will be used to filter
out entities that do not need to be considered during matching.employees/{external_id}/matching_vacancies
and
vacancies/{external_id}/matching_employees
. The weights can override some
default weights during matching (e.g. desired functions boost).matching_vacancies
and matching_employees
are
now the preferred way to request the matches.language
query parameter.
Supported languages are auto
, nl
, fr
and en
.max_geo_distance
attribute when creating an
Employee through the endpoint /employees
. This is used for matching if
there is no max_geo_distance
. provided as query parameter. The default
distance in our system when nothing is provided, is 50 km.desired_functions
and non_desired_functions
fields of the Employee
have been changed from lists of titles to list of Function objects. A
Function object consists of a Function title and a relative importance.competency
, competencies
or capitalized alternatives
have been renamed to skill_cluster
and skill_clusters
, and their
capitalized versions.category
, categories
or capitalized alternatives have
been renamed to domain
and domains
, and their capitalized versions.The competency
and score
fields in
PUT, PATCH /{entity}/{external_id}/skill_profile
in competencies
format
are now renamed to competency_name
and proficiency_level
respectively.
The score
fields in PUT, PATCH /{entity}/{external_id}/skill_profile
in
skills
format is replaced by has_skill
which is a boolean instead of
number.
competency
and score
fields in
GET /{entity}/{external_id}/skill_profile
in competencies
format are now
renamed to competency_name
and proficiency_level
respectively.score
field in GET /{entity}/{external_id}/skill_profile
in list
format is now optional.GET /employees/{external_id}/recommended_courses
and added POST
instead.POST /competencies/{external_id}/similar
and
POST /competencies/{external_id}/profile/related
endpoints.PUT /competencies/{external_id}/skill_profile
feedback endpoint.POST
instead of GET
.score_min_threshold
query parameter, and
defaults to 0.5 for this value instead of the previously internal 0.0.GET/POST /employees/{external_id}/matching_vacancies
,
GET/POST /vacancies/{external_id}/matching_employees
,
GET /employees/{external_id}/matching_companies
and
GET /companies/{external_id}/matching_employees
) has changed from a list
to an object containing two fields: the list of results and the total number
of results available.POST /employees/search
,
POST /vacancies/search
and POST /companies/search
) has changed from a
list to an object containing two fields: the list of search results and the
total number of results available from the free text search.GET /employees/
, GET /vacancies/
,
GET /companies/
, GET /courses/
, GET /competencies/
, GET /documents/
and GET /occupations/
) has changed from a list to an object containing two
fields: the list of results and the total number of results available.POST /employees
) and updates
(PATCH /employees/{external_id}
) no longer support uploading individual
resumes (as employee_resume
) in favour of accepting a list of multiple
resumes (as employee_documents
) with the same format.GET /employees
, GET /vacancies
,
GET /courses
, GET /occupations
, GET /competencies
and
GET /documents
) no longer support the response_format
query parameter.
The response now corresponds to the former objects
response format for all
endpoints.version
,
indicating the current version of your tenant. The version is returned as a
date (ISO-8601, ex. 2021-01-19) and no longer as a number.Employees in the Skill Engine API represent either a person within your organisation or a candidate within the job market.
More info about Entities can be found on the How it Works page
Get a list of all Employees available in the system. This can for example be used to keep track of proper synchronisation between your system and the Skill Engine API.
read
) {- "count": 3,
- "results": [
- {
- "external_id": "5cbdbdbe-5f44-4423-8157-520f8a2f429a",
- "location": {
- "lat": 50.0216707,
- "lng": 3.6887328
}, - "assigned_position": "HR assistant",
- "last_updated": "2021-01-21T17:32:28.000Z"
}, - {
- "external_id": "62d2c013-ab77-410e-b5fb-2f96eed9c1db",
- "location": {
- "lat": 51.0216707,
- "lng": 2.6887328
}, - "assigned_position": "Staffing coordinator",
- "last_updated": "2021-01-22T15:02:00.000Z"
}, - {
- "external_id": "6129e3f1-663f-44ea-aa3f-2ce1077b834c",
- "location": {
- "lat": 51.0516707,
- "lng": 4.6887328
}, - "assigned_position": "HR analyst",
- "last_updated": "2021-01-21T17:46:29.000Z"
}
]
}
Submit new Employee information to initialise their Skill Profile inside the Skill Engine API.
write
) {- "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
- "assigned_position": "Python Developer",
- "working_history": [
- {
- "start_date": "2018-09-05",
- "end_date": "2020-06-17",
- "company": "TechWolf BV",
- "job_title": "HR Manager",
- "job_description": "Manage the HR department and perform workforce planning"
}
], - "education_history": [
- {
- "start_date": "2016-09-05",
- "end_date": "2018-09-05",
- "school": "Harvard University",
- "degree_name": "Master in Human Resources Management"
}
], - "languages": [
- {
- "language": "nl",
- "level": 2
}
], - "desired_functions": [
- {
- "title": "Business Analyst",
- "relative_importance": 3
}, - {
- "title": "Police Officer",
- "relative_importance": 5
}
], - "non_desired_functions": [
- {
- "title": "Software Developer",
- "relative_importance": 2
}
], - "location": {
- "lat": 51.0216707,
- "lng": 3.6887328
}, - "employee_documents": [
- {
- "mimeType": "application/pdf",
- "base64Content": "JVBERi0xLjMNCiXi48/TDQoNCjEgMCBvYmoNCjw8DQovVHlwZSAvQ2F0YWxvZw0KL091dGxpbmVzIDIgMCBSDQovUGFnZXMgMyAwIFINCj4+DQplbmRvYmoNCg0KMiAwIG9iag0KPDwNCi9UeXBlIC9PdXRsaW5lcw0KL0NvdW50IDANCj4+DQplbmRvYmoNCg0KMyAwIG9iag0KPDwNCi9UeXBlIC9QYWdlcw0KL0NvdW50IDINCi9LaWRzIFsgNCAwIFIgNiAwIFIgXSANCj4+DQplbmRvYmoNCg0KNCAwIG9iag0KPDwNCi9UeXBlIC9QYWdlDQovUGFyZW50IDMgMCBSDQovUmVzb3VyY2VzIDw8DQovRm9udCA8PA0KL0YxIDkgMCBSIA0KPj4NCi9Qcm9jU2V0IDggMCBSDQo+Pg0KL01lZGlhQm94IFswIDAgNjEyLjAwMDAgNzkyLjAwMDBdDQovQ29udGVudHMgNSAwIFINCj4+DQplbmRvYmoNCg0KNSAwIG9iag0KPDwgL0xlbmd0aCAxMDc0ID4+DQpzdHJlYW0NCjIgSg0KQlQNCjAgMCAwIHJnDQovRjEgMDAyNyBUZg0KNTcuMzc1MCA3MjIuMjgwMCBUZA0KKCBBIFNpbXBsZSBQREYgRmlsZSApIFRqDQpFVA0KQlQNCi9GMSAwMDEwIFRmDQo2OS4yNTAwIDY4OC42MDgwIFRkDQooIFRoaXMgaXMgYSBzbWFsbCBkZW1vbnN0cmF0aW9uIC5wZGYgZmlsZSAtICkgVGoNCkVUDQpCVA0KL0YxIDAwMTAgVGYNCjY5LjI1MDAgNjY0LjcwNDAgVGQNCigganVzdCBmb3IgdXNlIGluIHRoZSBWaXJ0dWFsIE1lY2hhbmljcyB0dXRvcmlhbHMuIE1vcmUgdGV4dC4gQW5kIG1vcmUgKSBUag0KRVQNCkJUDQovRjEgMDAxMCBUZg0KNjkuMjUwMCA2NTIuNzUyMCBUZA0KKCB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiApIFRqDQpFVA0KQlQNCi9GMSAwMDEwIFRmDQo2OS4yNTAwIDYyOC44NDgwIFRkDQooIEFuZCBtb3JlIHRleHQuIEFuZCBtb3JlIHRleHQuIEFuZCBtb3JlIHRleHQuIEFuZCBtb3JlIHRleHQuIEFuZCBtb3JlICkgVGoNCkVUDQpCVA0KL0YxIDAwMTAgVGYNCjY5LjI1MDAgNjE2Ljg5NjAgVGQNCiggdGV4dC4gQW5kIG1vcmUgdGV4dC4gQm9yaW5nLCB6enp6ei4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kICkgVGoNCkVUDQpCVA0KL0YxIDAwMTAgVGYNCjY5LjI1MDAgNjA0Ljk0NDAgVGQNCiggbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiApIFRqDQpFVA0KQlQNCi9GMSAwMDEwIFRmDQo2OS4yNTAwIDU5Mi45OTIwIFRkDQooIEFuZCBtb3JlIHRleHQuIEFuZCBtb3JlIHRleHQuICkgVGoNCkVUDQpCVA0KL0YxIDAwMTAgVGYNCjY5LjI1MDAgNTY5LjA4ODAgVGQNCiggQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgKSBUag0KRVQNCkJUDQovRjEgMDAxMCBUZg0KNjkuMjUwMCA1NTcuMTM2MCBUZA0KKCB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBFdmVuIG1vcmUuIENvbnRpbnVlZCBvbiBwYWdlIDIgLi4uKSBUag0KRVQNCmVuZHN0cmVhbQ0KZW5kb2JqDQoNCjYgMCBvYmoNCjw8DQovVHlwZSAvUGFnZQ0KL1BhcmVudCAzIDAgUg0KL1Jlc291cmNlcyA8PA0KL0ZvbnQgPDwNCi9GMSA5IDAgUiANCj4+DQovUHJvY1NldCA4IDAgUg0KPj4NCi9NZWRpYUJveCBbMCAwIDYxMi4wMDAwIDc5Mi4wMDAwXQ0KL0NvbnRlbnRzIDcgMCBSDQo+Pg0KZW5kb2JqDQoNCjcgMCBvYmoNCjw8IC9MZW5ndGggNjc2ID4+DQpzdHJlYW0NCjIgSg0KQlQNCjAgMCAwIHJnDQovRjEgMDAyNyBUZg0KNTcuMzc1MCA3MjIuMjgwMCBUZA0KKCBTaW1wbGUgUERGIEZpbGUgMiApIFRqDQpFVA0KQlQNCi9GMSAwMDEwIFRmDQo2OS4yNTAwIDY4OC42MDgwIFRkDQooIC4uLmNvbnRpbnVlZCBmcm9tIHBhZ2UgMS4gWWV0IG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gKSBUag0KRVQNCkJUDQovRjEgMDAxMCBUZg0KNjkuMjUwMCA2NzYuNjU2MCBUZA0KKCBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSApIFRqDQpFVA0KQlQNCi9GMSAwMDEwIFRmDQo2OS4yNTAwIDY2NC43MDQwIFRkDQooIHRleHQuIE9oLCBob3cgYm9yaW5nIHR5cGluZyB0aGlzIHN0dWZmLiBCdXQgbm90IGFzIGJvcmluZyBhcyB3YXRjaGluZyApIFRqDQpFVA0KQlQNCi9GMSAwMDEwIFRmDQo2OS4yNTAwIDY1Mi43NTIwIFRkDQooIHBhaW50IGRyeS4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gKSBUag0KRVQNCkJUDQovRjEgMDAxMCBUZg0KNjkuMjUwMCA2NDAuODAwMCBUZA0KKCBCb3JpbmcuICBNb3JlLCBhIGxpdHRsZSBtb3JlIHRleHQuIFRoZSBlbmQsIGFuZCBqdXN0IGFzIHdlbGwuICkgVGoNCkVUDQplbmRzdHJlYW0NCmVuZG9iag0KDQo4IDAgb2JqDQpbL1BERiAvVGV4dF0NCmVuZG9iag0KDQo5IDAgb2JqDQo8PA0KL1R5cGUgL0ZvbnQNCi9TdWJ0eXBlIC9UeXBlMQ0KL05hbWUgL0YxDQovQmFzZUZvbnQgL0hlbHZldGljYQ0KL0VuY29kaW5nIC9XaW5BbnNpRW5jb2RpbmcNCj4+DQplbmRvYmoNCg0KMTAgMCBvYmoNCjw8DQovQ3JlYXRvciAoUmF2ZSBcKGh0dHA6Ly93d3cubmV2cm9uYS5jb20vcmF2ZVwpKQ0KL1Byb2R1Y2VyIChOZXZyb25hIERlc2lnbnMpDQovQ3JlYXRpb25EYXRlIChEOjIwMDYwMzAxMDcyODI2KQ0KPj4NCmVuZG9iag0KDQp4cmVmDQowIDExDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMTkgMDAwMDAgbg0KMDAwMDAwMDA5MyAwMDAwMCBuDQowMDAwMDAwMTQ3IDAwMDAwIG4NCjAwMDAwMDAyMjIgMDAwMDAgbg0KMDAwMDAwMDM5MCAwMDAwMCBuDQowMDAwMDAxNTIyIDAwMDAwIG4NCjAwMDAwMDE2OTAgMDAwMDAgbg0KMDAwMDAwMjQyMyAwMDAwMCBuDQowMDAwMDAyNDU2IDAwMDAwIG4NCjAwMDAwMDI1NzQgMDAwMDAgbg0KDQp0cmFpbGVyDQo8PA0KL1NpemUgMTENCi9Sb290IDEgMCBSDQovSW5mbyAxMCAwIFINCj4+DQoNCnN0YXJ0eHJlZg0KMjcxNA0KJSVFT0YNCg=="
}
]
}
[- {
- "title": "400 Bad Request",
- "description": "The request body was not structured correctly."
}
]
Get the Employee information stored inside the system. As resumes are not stored inside our system, they are not returned in this call.
read
) {- "last_updated": "2021-01-21T17:32:28.000Z",
- "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
- "assigned_position": "Python Developer",
- "working_history": [
- {
- "start_date": "2018-09-05",
- "end_date": "2020-06-17",
- "company": "TechWolf BV",
- "job_title": "HR Manager",
- "job_description": "Manage the HR department and perform workforce planning"
}
], - "education_history": [
- {
- "start_date": "2016-09-05",
- "end_date": "2018-09-05",
- "school": "Harvard University",
- "degree_name": "Master in Human Resources Management"
}
], - "languages": [
- {
- "language": "nl",
- "level": 2
}
], - "desired_functions": [
- {
- "title": "Business Analyst",
- "relative_importance": 3
}, - {
- "title": "Police Officer",
- "relative_importance": 5
}
], - "non_desired_functions": [
- {
- "title": "Software Developer",
- "relative_importance": 2
}
], - "location": {
- "lat": 51.0216707,
- "lng": 3.6887328
}
}
Submit the most up to date Employee information to update their profile inside the system. Any field that is present will overwrite existing values within the system, while absent fields will be left as-is.
Since the Employee resume is deleted after creating a skill profile, it is a required field for recalculating the skill profile based on the resume. If no resume is provided, the skill profile will be recalculated based on the other available properties.
Passing the null
value removes non-required attributes. Object attributes will be removed when passing null
, arrays with []
and strings with the empty string ''
.
write
) {- "assigned_position": "Python Developer",
- "working_history": [
- {
- "start_date": "2018-09-05",
- "end_date": "2020-06-17",
- "company": "TechWolf BV",
- "job_title": "HR Manager",
- "job_description": "Manage the HR department and perform workforce planning"
}
], - "education_history": [
- {
- "start_date": "2016-09-05",
- "end_date": "2018-09-05",
- "school": "Harvard University",
- "degree_name": "Master in Human Resources Management"
}
], - "languages": [
- {
- "language": "nl",
- "level": 2
}
], - "desired_functions": [
- {
- "title": "Business Analyst",
- "relative_importance": 3
}, - {
- "title": "Police Officer",
- "relative_importance": 5
}
], - "non_desired_functions": [
- {
- "title": "Software Developer",
- "relative_importance": 2
}
], - "location": {
- "lat": 51.0216707,
- "lng": 3.6887328
}, - "employee_documents": [
- {
- "mimeType": "application/pdf",
- "base64Content": "JVBERi0xLjMNCiXi48/TDQoNCjEgMCBvYmoNCjw8DQovVHlwZSAvQ2F0YWxvZw0KL091dGxpbmVzIDIgMCBSDQovUGFnZXMgMyAwIFINCj4+DQplbmRvYmoNCg0KMiAwIG9iag0KPDwNCi9UeXBlIC9PdXRsaW5lcw0KL0NvdW50IDANCj4+DQplbmRvYmoNCg0KMyAwIG9iag0KPDwNCi9UeXBlIC9QYWdlcw0KL0NvdW50IDINCi9LaWRzIFsgNCAwIFIgNiAwIFIgXSANCj4+DQplbmRvYmoNCg0KNCAwIG9iag0KPDwNCi9UeXBlIC9QYWdlDQovUGFyZW50IDMgMCBSDQovUmVzb3VyY2VzIDw8DQovRm9udCA8PA0KL0YxIDkgMCBSIA0KPj4NCi9Qcm9jU2V0IDggMCBSDQo+Pg0KL01lZGlhQm94IFswIDAgNjEyLjAwMDAgNzkyLjAwMDBdDQovQ29udGVudHMgNSAwIFINCj4+DQplbmRvYmoNCg0KNSAwIG9iag0KPDwgL0xlbmd0aCAxMDc0ID4+DQpzdHJlYW0NCjIgSg0KQlQNCjAgMCAwIHJnDQovRjEgMDAyNyBUZg0KNTcuMzc1MCA3MjIuMjgwMCBUZA0KKCBBIFNpbXBsZSBQREYgRmlsZSApIFRqDQpFVA0KQlQNCi9GMSAwMDEwIFRmDQo2OS4yNTAwIDY4OC42MDgwIFRkDQooIFRoaXMgaXMgYSBzbWFsbCBkZW1vbnN0cmF0aW9uIC5wZGYgZmlsZSAtICkgVGoNCkVUDQpCVA0KL0YxIDAwMTAgVGYNCjY5LjI1MDAgNjY0LjcwNDAgVGQNCigganVzdCBmb3IgdXNlIGluIHRoZSBWaXJ0dWFsIE1lY2hhbmljcyB0dXRvcmlhbHMuIE1vcmUgdGV4dC4gQW5kIG1vcmUgKSBUag0KRVQNCkJUDQovRjEgMDAxMCBUZg0KNjkuMjUwMCA2NTIuNzUyMCBUZA0KKCB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiApIFRqDQpFVA0KQlQNCi9GMSAwMDEwIFRmDQo2OS4yNTAwIDYyOC44NDgwIFRkDQooIEFuZCBtb3JlIHRleHQuIEFuZCBtb3JlIHRleHQuIEFuZCBtb3JlIHRleHQuIEFuZCBtb3JlIHRleHQuIEFuZCBtb3JlICkgVGoNCkVUDQpCVA0KL0YxIDAwMTAgVGYNCjY5LjI1MDAgNjE2Ljg5NjAgVGQNCiggdGV4dC4gQW5kIG1vcmUgdGV4dC4gQm9yaW5nLCB6enp6ei4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kICkgVGoNCkVUDQpCVA0KL0YxIDAwMTAgVGYNCjY5LjI1MDAgNjA0Ljk0NDAgVGQNCiggbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiApIFRqDQpFVA0KQlQNCi9GMSAwMDEwIFRmDQo2OS4yNTAwIDU5Mi45OTIwIFRkDQooIEFuZCBtb3JlIHRleHQuIEFuZCBtb3JlIHRleHQuICkgVGoNCkVUDQpCVA0KL0YxIDAwMTAgVGYNCjY5LjI1MDAgNTY5LjA4ODAgVGQNCiggQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgKSBUag0KRVQNCkJUDQovRjEgMDAxMCBUZg0KNjkuMjUwMCA1NTcuMTM2MCBUZA0KKCB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBFdmVuIG1vcmUuIENvbnRpbnVlZCBvbiBwYWdlIDIgLi4uKSBUag0KRVQNCmVuZHN0cmVhbQ0KZW5kb2JqDQoNCjYgMCBvYmoNCjw8DQovVHlwZSAvUGFnZQ0KL1BhcmVudCAzIDAgUg0KL1Jlc291cmNlcyA8PA0KL0ZvbnQgPDwNCi9GMSA5IDAgUiANCj4+DQovUHJvY1NldCA4IDAgUg0KPj4NCi9NZWRpYUJveCBbMCAwIDYxMi4wMDAwIDc5Mi4wMDAwXQ0KL0NvbnRlbnRzIDcgMCBSDQo+Pg0KZW5kb2JqDQoNCjcgMCBvYmoNCjw8IC9MZW5ndGggNjc2ID4+DQpzdHJlYW0NCjIgSg0KQlQNCjAgMCAwIHJnDQovRjEgMDAyNyBUZg0KNTcuMzc1MCA3MjIuMjgwMCBUZA0KKCBTaW1wbGUgUERGIEZpbGUgMiApIFRqDQpFVA0KQlQNCi9GMSAwMDEwIFRmDQo2OS4yNTAwIDY4OC42MDgwIFRkDQooIC4uLmNvbnRpbnVlZCBmcm9tIHBhZ2UgMS4gWWV0IG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gKSBUag0KRVQNCkJUDQovRjEgMDAxMCBUZg0KNjkuMjUwMCA2NzYuNjU2MCBUZA0KKCBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSApIFRqDQpFVA0KQlQNCi9GMSAwMDEwIFRmDQo2OS4yNTAwIDY2NC43MDQwIFRkDQooIHRleHQuIE9oLCBob3cgYm9yaW5nIHR5cGluZyB0aGlzIHN0dWZmLiBCdXQgbm90IGFzIGJvcmluZyBhcyB3YXRjaGluZyApIFRqDQpFVA0KQlQNCi9GMSAwMDEwIFRmDQo2OS4yNTAwIDY1Mi43NTIwIFRkDQooIHBhaW50IGRyeS4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gKSBUag0KRVQNCkJUDQovRjEgMDAxMCBUZg0KNjkuMjUwMCA2NDAuODAwMCBUZA0KKCBCb3JpbmcuICBNb3JlLCBhIGxpdHRsZSBtb3JlIHRleHQuIFRoZSBlbmQsIGFuZCBqdXN0IGFzIHdlbGwuICkgVGoNCkVUDQplbmRzdHJlYW0NCmVuZG9iag0KDQo4IDAgb2JqDQpbL1BERiAvVGV4dF0NCmVuZG9iag0KDQo5IDAgb2JqDQo8PA0KL1R5cGUgL0ZvbnQNCi9TdWJ0eXBlIC9UeXBlMQ0KL05hbWUgL0YxDQovQmFzZUZvbnQgL0hlbHZldGljYQ0KL0VuY29kaW5nIC9XaW5BbnNpRW5jb2RpbmcNCj4+DQplbmRvYmoNCg0KMTAgMCBvYmoNCjw8DQovQ3JlYXRvciAoUmF2ZSBcKGh0dHA6Ly93d3cubmV2cm9uYS5jb20vcmF2ZVwpKQ0KL1Byb2R1Y2VyIChOZXZyb25hIERlc2lnbnMpDQovQ3JlYXRpb25EYXRlIChEOjIwMDYwMzAxMDcyODI2KQ0KPj4NCmVuZG9iag0KDQp4cmVmDQowIDExDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMTkgMDAwMDAgbg0KMDAwMDAwMDA5MyAwMDAwMCBuDQowMDAwMDAwMTQ3IDAwMDAwIG4NCjAwMDAwMDAyMjIgMDAwMDAgbg0KMDAwMDAwMDM5MCAwMDAwMCBuDQowMDAwMDAxNTIyIDAwMDAwIG4NCjAwMDAwMDE2OTAgMDAwMDAgbg0KMDAwMDAwMjQyMyAwMDAwMCBuDQowMDAwMDAyNDU2IDAwMDAwIG4NCjAwMDAwMDI1NzQgMDAwMDAgbg0KDQp0cmFpbGVyDQo8PA0KL1NpemUgMTENCi9Sb290IDEgMCBSDQovSW5mbyAxMCAwIFINCj4+DQoNCnN0YXJ0eHJlZg0KMjcxNA0KJSVFT0YNCg=="
}
]
}
[- {
- "title": "400 Bad Request",
- "description": "The request body was not structured correctly."
}
]
Remove an Employee from the system. This step deletes all information linked exclusively to this Employee. If these need to be removed as well, make sure to do this separately. By deleting an Employee, you delete their skill profile history, which cannot be recreated or recovered afterwards.
[- {
- "title": "401 Unauthorized",
- "description": "OAuth access token is missing, invalid or expired."
}
]
Get a list of all the Custom Property Definitions stored inside the system.
read
) [- {
- "property_name": "wage",
- "property_type": "number"
}, - {
- "property_name": "sector",
- "property_type": "text"
}
]
Create a new Custom Property Definition in the system.
write
) {- "property_name": "sector",
- "property_type": "text"
}
[- {
- "title": "400 Bad Request",
- "description": "The request body was not structured correctly."
}
]
Get the Custom Property Definition information stored inside the system.
{- "property_name": "sector",
- "property_type": "text"
}
Rename a Custom Property Definition.
{- "property_name": "sector"
}
[- {
- "title": "400 Bad Request",
- "description": "The request body was not structured correctly."
}
]
Remove a Custom Property Definition from the system.
[- {
- "title": "401 Unauthorized",
- "description": "OAuth access token is missing, invalid or expired."
}
]
Fetch all Employee properties from the system (if any exists, otherwise an empty list is returned).
[- {
- "property_name": "direct_manager",
- "property_value": "John Doe"
}, - {
- "property_name": "yearly_wage",
- "property_value": 50000
}, - {
- "property_name": "freelancer",
- "property_value": false
}, - {
- "property_name": "driving_licenses",
- "property_value": [
- "B",
- "C"
]
}, - {
- "property_name": "start_date",
- "property_value": "2020-01-14"
}, - {
- "property_name": "creation_date",
- "property_value": "2020-01-12T17:14:30.40"
}
]
In addition to the default fields available for each Employee, a set of custom properties can be added. Each Employee is allowed to have a maximum of 100 properties, with properties being numbers or strings (maximum length 1000 characters).
write
) [- {
- "property_name": "direct_manager",
- "property_value": "John Doe"
}, - {
- "property_name": "yearly_wage",
- "property_value": 50000
}, - {
- "property_name": "freelancer",
- "property_value": false
}, - {
- "property_name": "driving_licenses",
- "property_value": [
- "B",
- "C"
]
}, - {
- "property_name": "start_date",
- "property_value": "2020-01-14"
}, - {
- "property_name": "creation_date",
- "property_value": "2020-01-12T17:14:30.40"
}
]
{- "title": "400 Bad Request",
- "description": "The request body was not structured correctly."
}
In addition to the default fields available for each Employee, a set of custom properties can be added. Each Employee is allowed to have a maximum of 100 properties, with properties being numbers or strings (maximum length 1000 characters).
write
) [- {
- "property_name": "direct_manager",
- "property_value": "John Doe"
}, - {
- "property_name": "yearly_wage",
- "property_value": 50000
}, - {
- "property_name": "freelancer",
- "property_value": false
}, - {
- "property_name": "driving_licenses",
- "property_value": [
- "B",
- "C"
]
}, - {
- "property_name": "start_date",
- "property_value": "2020-01-14"
}, - {
- "property_name": "creation_date",
- "property_value": "2020-01-12T17:14:30.40"
}
]
{- "title": "400 Bad Request",
- "description": "The request body was not structured correctly."
}
Drop all Employee properties from the system (if any exists).
[- {
- "title": "401 Unauthorized",
- "description": "OAuth access token is missing, invalid or expired."
}
]
Get an export of the Employee skill profile to leverage it for user interaction. Check our tutorials for a clear overview of how to get the most out of each format!
read
) response_format | string Default: "list" The format of the response profile. More info about adding your Skill Clusters can be found in the tutorials. Example: response_format=list |
{- "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
- "num_skill_events": 5,
- "skills": [
- {
- "skill": "Machine Learning",
- "validation_state": "suggested"
}, - {
- "skill": "Python",
- "validation_state": "validated"
}, - {
- "skill": "Tensorflow",
- "validation_state": "suggested"
}
]
}
Provide feedback about an existing Employee skill profile to update it inside the system. When the feedback_format
query parameter is skills
, the body of the feedback message replaces the existing skill profile, so if a skill is not present in the body or has_skill
equals false
, it will be removed. The feedback can contain updates that either validate or remove the skill. When the feedback_format
query parameter is skill_clusters
, this endpoint will change the Skill Cluster skills in the skill profile to fit the given Skill Cluster proficiency level.
write
) Array of objects (SkillWithRequiredHasSkillArray) The skills contained in this profile. |
{- "skills": [
- {
- "skill": "Machine Learning",
- "has_skill": true
}, - {
- "skill": "Python",
- "has_skill": true
}, - {
- "skill": "Tensorflow",
- "has_skill": false
}
]
}
[- {
- "title": "400 Bad Request",
- "description": "The request body was not structured correctly."
}
]
Provide feedback about an existing Employee skill profile to update it inside
the system. When the feedback_format
query parameter is skills
,
the body of the feedback message overwrites, adds or updates skills in the original profile.
When the feedback_format
query parameter is skill_clusters
, this endpoint will change the Skill Cluster
skills in the skill profile to fit the given Skill Cluster proficiency level.
write
) Array of objects (SkillWithRequiredHasSkillArray) The skills contained in this profile. |
{- "skills": [
- {
- "skill": "Machine Learning",
- "has_skill": true
}, - {
- "skill": "Python",
- "has_skill": true
}, - {
- "skill": "Tensorflow",
- "has_skill": false
}
]
}
[- {
- "title": "400 Bad Request",
- "description": "The request body was not structured correctly."
}
]
A metric is a single number representing some amount of information about an Entity or a collection of Entities of the same type.
More info about Metrics can be found on the How it Works page .
Retrieve the employability for this Employee. Employability is influenced by two factors: the number of matching Vacancies (demand) & the number of Employees that could fill those Vacancies (supply). It is reported as a number between 0 and 1, with the upper end indicating that an Employee has many matching opportunities (= high demand) for which there are not many matching Employees (= low supply). A lower score indicates fewer opportunities (= low demand), or that there is already a high supply of those profiles.
{- "entity_type": "Employee",
- "entity_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
- "metric_name": "employability",
- "metric_value": 0.8,
- "last_update": "2020-09-01T11:45:49Z"
}
Retrieve the employability for this Employee. Employability is influenced by two factors: the number of matching Vacancies (demand) & the number of Employees that could fill those Vacancies (supply). It is reported as a number between 0 and 1, with the upper end indicating that an Employee has many matching opportunities (= high demand) for which there are not many matching Employees (= low supply). A lower score indicates fewer opportunities (= low demand), or that there is already a high supply of those profiles.
read
) Array of max_geo_distance (object) or custom_property (object) | |
Array of max_geo_distance (object) or custom_property (object) | |
Array of skills_match (object) or desired_functions (object) or non_desired_functions (object) |
{- "employee_filters": [
- {
- "filter": "max_geo_distance",
- "max_geo_distance": 50
}
], - "vacancy_filters": [
- {
- "filter": "max_geo_distance",
- "max_geo_distance": 50
}
], - "weights": [
- {
- "weight": "skills_match",
- "value": 1
}, - {
- "weight": "desired_functions",
- "value": 0.03
}, - {
- "weight": "non_desired_functions",
- "value": 0.08
}
]
}
{- "entity_type": "Employee",
- "entity_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
- "metric_name": "employability",
- "metric_value": 0.8,
- "last_update": "2020-09-01T11:45:49Z"
}
Get the total number of Employee objects stored inside the system.
read
) {- "entity_type": "Employee",
- "entity_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
- "metric_name": "count",
- "metric_value": 1000,
- "last_update": "2020-09-01T11:45:49Z"
}
Retrieve the position alignment for this Employee. Position alignment is an indication of the extent to which an Employee fits their assigned position within your company. It is reported as a number between 0 and 1, with the upper end indicating that an Employee is a good fit for their assigned position, while a lower score indicates that the employee may have some missing skills.
read
) {- "entity_type": "Employee",
- "entity_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
- "metric_name": "position_alignment",
- "metric_value": 0.8,
- "last_update": "2020-09-01T11:45:49Z"
}
Search for Employees
read
) {- "text": "Bakery",
- "location": {
- "lat": 51.0216707,
- "lng": 3.6887328
}, - "filters": [
- {
- "filter": "max_geo_distance",
- "max_geo_distance": 50
}, - {
- "filter": "custom_property",
- "property_name": "direct_manager",
- "property_value": "John Doe"
}, - {
- "filter": "custom_property_is_in_list",
- "property_name": "drivers_license",
- "possible_values": [
- "C",
- "CE"
]
}, - {
- "filter": "custom_property_contains_element",
- "property_name": "industries",
- "property_value": "electronics"
}, - {
- "filter": "external_id_is_in_list",
- "external_ids": [
- "external_id_1",
- "external_id_2",
- "external_id_3"
]
}, - {
- "filter": "exclude_match_feedback",
- "search_for": "vacancy_id",
- "exclude_match_feedback": "thumbs_up"
}
], - "weights": [
- {
- "weight": "skills_match",
- "value": 1
}, - {
- "weight": "desired_functions",
- "value": 0.03
}, - {
- "weight": "non_desired_functions",
- "value": 0.08
}, - {
- "weight": "max_geo_distance",
- "value": 0.1,
- "full_score_distance": 5,
- "zero_score_distance": 15
}, - {
- "weight": "custom_property",
- "property_name": "direct_manager",
- "property_value": "John Doe",
- "operator": "eq",
- "value": 0.04
}, - {
- "weight": "custom_property",
- "property_name": "yearly_salary",
- "property_value": 45000,
- "operator": "gte",
- "value": 0.04
}
]
}
[- {
- "count": 3,
- "results": [
- {
- "employee_id": "euid-123",
- "score": 0.82
}, - {
- "employee_id": "euid-456",
- "score": 0.74
}, - {
- "employee_id": "euid-789",
- "score": 0.56
}
]
}
]
A Skill Event influences the skillset of an Employee. When an Employee finishes a course, receives feedback, starts a new function, or when another event occurs that gives additional info to an Employee's skill profile, a Skill Event can be generated.
Skill Events allow you to monitor the evolution of an Employee's skill profile and allow you to pinpoint exactly what skills your Employees had at a certain time. Skill Events also enable an easy method of adding new information to a profile.
Check the how it works article to find out everything you need to know about skill events. How it Works
Get all Skill Events of a specified event type linked to an employee.
read
) limit | integer [ 1 .. 200 ] Default: 100 The maximal number of Entities returned, ordered by the Example: limit=50 |
offset | integer >= 0 Default: 0 The applied offset for returned Entities, results starting from |
event_type required | string Type of the Skill Event. Learn more about the Skill Event Types at How it works. Example: event_type=learning |
{- "count": 3,
- "results": [
- {
- "external_id": "5cbdbdbe-5f44-4423-8157-520f8a2f429a",
- "event_type": "learning",
- "timestamp": "2021-01-03",
- "content": {
- "learning_title": "Computer Science 103",
- "learning_description": "A description for the Computer Science 103 course."
}, - "source": "youtube"
}, - {
- "external_id": "5cbdbdbe-5f44-4423-8157-520f8a2f847b",
- "event_type": "learning",
- "timestamp": "2021-01-02",
- "content": {
- "learning_title": "Computer Science 102",
- "learning_description": "A description for the Computer Science 102 course."
}, - "source": "course"
}, - {
- "external_id": "5cbdbdbe-5f44-4423-8157-520f8a2f1538",
- "event_type": "learning",
- "timestamp": "2021-01-01",
- "content": {
- "learning_title": "Computer Science 101",
- "learning_description": "A description for the Computer Science 101 course."
}, - "source": "employee-archives"
}
]
}
Create a new skill event for an Employee. This can be used to track the skill profile of an Employee over time.
write
) external_id required | string <uuid> non-empty [a-zA-Z0-9_-]+ The unique Skill Event ID in your system, consisting of alphanumeric characters, hyphens and underscores. |
event_type required | string Type of the Skill Event. Learn more about the Skill Event Types at How it works. |
required | string or string The completion date (in IS08601 format) of the Skill Event. From this point on, the Employee is considered to have obtained the skills of this Event. |
source | string <free text> The source system of the Skill Event. This is used to keep track of where Skill Events originate from. |
required | working_history_content (object) or working_history_job_content (object) or education_history_content (object) or resume_document (object) or learning_content (object) or learning_course_content (object) or feedback_content (object) or goal_content (object) or project_content (object) or certificate_content (object) or skill_notes (object) The content of the Skill Event. Each type of Skill Event has a different content. The content should align with the |
{- "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
- "event_type": "working_history",
- "timestamp": "2019-08-24",
- "source": "employee-archives",
- "content": {
- "start_date": "2018-09-05",
- "end_date": "2020-06-17",
- "company": "TechWolf BV",
- "job_title": "HR Manager",
- "job_description": "Manage the HR department and perform workforce planning"
}
}
[- {
- "title": "400 Bad Request",
- "description": "The request body was not structured correctly."
}
]
Update a Skill Event for an Employee.
write
) {- "timestamp": "2019-08-24",
- "source": "employee-archives",
- "content": {
- "start_date": "2018-09-05",
- "end_date": "2020-06-17",
- "company": "TechWolf BV",
- "job_title": "HR Manager",
- "job_description": "Manage the HR department and perform workforce planning"
}
}
[- {
- "title": "401 Unauthorized",
- "description": "OAuth access token is missing, invalid or expired."
}
]
Remove a Skill Event from an Employee. This step deletes all information linked exclusively to this Skill Event. If a Skill Event contained a non-empty skill profile, the employee's skill profile is recalculated with the remaining Skill Events.
write
) [- {
- "title": "401 Unauthorized",
- "description": "OAuth access token is missing, invalid or expired."
}
]
Job Families in the Skill Engine API represent a group of Jobs that are related within your organisation.
More info about Job Families can be found at the Job Architecture Tutorial
Get a list of all Job Families available in the system. This can for example be used to keep track of proper synchronisation between your system and the Skill Engine API.
read
) {- "count": 3,
- "results": [
- {
- "external_id": "5cbdbdbe-5f44-4423-8157-520f8a2f429a",
- "job_family_name": "Software Engineer",
- "job_family_group": "IT & Engineering"
}, - {
- "external_id": "62d2c013-ab77-410e-b5fb-2f96eed9c1db",
- "job_family_name": "Data Scientist",
- "job_family_group": "IT & Engineering"
}, - {
- "external_id": "6129e3f1-663f-44ea-aa3f-2ce1077b834c",
- "job_family_name": "Data Engineer",
- "job_family_group": "IT & Engineering"
}
]
}
Submit new Job Family information to initialise their Job Family inside the Skill Engine API.
write
) {- "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
- "job_family_name": "Software Engineer",
- "job_family_group": "IT & Engineering"
}
[- {
- "title": "400 Bad Request",
- "description": "The request body was not structured correctly."
}
]
Get the Job Family information stored inside the system.
read
) {- "last_updated": "2021-01-21T17:32:28.000Z",
- "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
- "job_family_name": "Software Engineer",
- "job_family_group": "IT & Engineering"
}
Submit the most up to date Job Family information. Any field that is present will overwrite existing values within the system, while absent fields will be left as-is.
write
) {- "job_family_name": "Software Engineer",
- "job_family_group": "IT & Engineering"
}
[- {
- "title": "400 Bad Request",
- "description": "The request body was not structured correctly."
}
]
Delete the Job Family information stored inside the system. By deleting the Job Family, all Job Family Profile Data is also deleted, together with every Job which is linked to this Job Family.
[- {
- "title": "401 Unauthorized",
- "description": "OAuth access token is missing, invalid or expired."
}
]
Get a list of all the Custom Property Definitions stored inside the system.
read
) [- {
- "property_name": "wage",
- "property_type": "number"
}, - {
- "property_name": "sector",
- "property_type": "text"
}
]
Create a new Custom Property Definition in the system.
write
) {- "property_name": "sector",
- "property_type": "text"
}
[- {
- "title": "400 Bad Request",
- "description": "The request body was not structured correctly."
}
]
Get the Custom Property Definition information stored inside the system.
{- "property_name": "sector",
- "property_type": "text"
}
Rename a Custom Property Definition.
{- "property_name": "sector"
}
[- {
- "title": "400 Bad Request",
- "description": "The request body was not structured correctly."
}
]
Remove a Custom Property Definition from the system.
[- {
- "title": "401 Unauthorized",
- "description": "OAuth access token is missing, invalid or expired."
}
]
Fetch all Job Family properties from the system (if any exists, otherwise an empty list is returned).
[- {
- "property_name": "language",
- "property_value": "Dutch"
}, - {
- "property_name": "experience",
- "property_value": 5
}, - {
- "property_name": "required_driving_licenses",
- "property_value": [
- "B",
- "C"
]
}
]
In addition to the default fields available for each Job Family, a set of custom properties can be added. Each Job Family is allowed to have a maximum of 100 properties, with properties being numbers or strings (maximum length 1000 characters).
write
) [- {
- "property_name": "language",
- "property_value": "Dutch"
}, - {
- "property_name": "experience",
- "property_value": 5
}, - {
- "property_name": "required_driving_licenses",
- "property_value": [
- "B",
- "C"
]
}
]