Skill Engine API (2024-12-19)

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.

Authentication

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 with grant_type client_credentials at:

  • For EU tenants: https://techwolf.eu.auth0.com/oauth/token
  • For US tenants: https://techwolf-us.us.auth0.com/oauth/token


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 to the token endpoint for EU tenants 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 calls
  • expires_in: lifetime of the token
  • scope: access permissions of the token
  • token_type: default Bearer

An example response can be found below:

{
    "access_token": "eyJhbGciOiJSUzI0I0seiEw",
    "expires_in": 10800,
    "scope": "read write"
    "token_type": "Bearer"
}

Scopes

A list of the supported scopes can be found below:

  • read: Grants read access
  • write: Grants write access
  • read_reports: Grants read access to reports (only aggregated info)

You can determine which scopes should be included in your access token by specifying them in the token request. If you don't specificy the scopes, you will receive a token with all possible scopes for your tenant.

An example request to the token endpoint for EU tenants 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",
    "scopes": ["read", "read_reports"]}'

Using the token

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.

Versioning Overview

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.

Deprecations will be announced in the documentation and will be supported for a certain period of time. After this period. After this period, the deprecation will become a breaking change. Deprecations 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 Beta 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.

Breaking Changes

View all breaking changes.

2024-12-19

  • Removed the GET /employees/{external_id}/metrics/position_alignment endpoint.

2024-11-20

  • Removed the POST /vacancies/{external_id}/metrics/fillability endpoint.

2024-11-15

  • Renamed the value of query parameter include=description to include=skill_description in the GET /taxonomy/skills endpoint.

2024-10-28

  • Changed the format for duplicate data examples from the GET /reports/data_maturity_scan/data_improvement_actions endpoint.

2024-10-07

  • Removed the POST /reports/skills_alignment endpoint.
  • Removed the POST /reports/workforce_alignment endpoint.
  • Removed the POST /reports/strategy_map endpoint.
  • Removed the POST /reports/skill_frequencies endpoint.
  • Removed the POST /reports/organization_names endpoint.
  • Removed the POST /reports/employee_skill_distribution endpoint.
  • Removed the POST /reports/vacancy_skill_distribution endpoint.

2024-09-20

  • Renamed the field name to skill_name in the GET /employees/{external_id}/skill_profile endpoint when the response_format query parameter is set to skill_clusters or domains.

2024-08-29

  • Removed the GET /reports/succession_risk endpoint.

2024-08-27

  • Removed the GET /reports/employees/skills endpoint.

2024-08-21

  • Removed the GET /reports/employees/position_alignment endpoint.

2024-08-20

  • Removed the POST /reports/replacement_risk endpoint.

2024-08-19

  • Removed count response body field from the POST /employees/search endpoint.
  • Removed count response body field from the POST /vacancies/search endpoint.
  • Removed count response body field from the POST /companies/search endpoint.
  • Removed count response body field from the POST /employees/{external_id}/recommended_courses endpoint.
  • Removed count response body field from the POST /employees/{employee_external_id}/vacancies/{vacancy_external_id}/recommended_courses endpoint.
  • Removed count response body field from the POST /employees/{employee_external_id}/jobs/{job_external_id}/recommended_courses endpoint.
  • Removed count response body field from the POST /employees/{external_id}/matching_vacancies endpoint.
  • Removed count response body field from the POST /employees/{external_id}/matching_companies endpoint.
  • Removed count response body field from the POST /employees/{external_id}/matching_jobs endpoint.
  • Removed count response body field from the POST /employees/{external_id}/matching_job_families endpoint.
  • Removed count response body field from the POST /vacancies/{external_id}/matching_employees endpoint.
  • Removed count response body field from the POST /companies/{external_id}/matching_employees endpoint.
  • Removed count response body field from the POST /job_architecture/jobs/{external_id}/matching_employees endpoint.
  • Removed count response body field from the POST /job_architecture/job_families/{external_id}/matching_employees endpoint.

2024-07-25

  • Removed the GET /reports/employees/employability endpoint.
  • Removed the GET /employees/{external_id}/metrics/employability endpoint.
  • Removed the GET /vacancies/{external_id}/metrics/fillability endpoint.

2024-06-20

  • Removed support for the language filter in the POST /companies/{external_id}/matching_employees endpoint.

2024-06-17

  • Removed feedback_format=skill_clusters support for the PATCH /vacancies/{external_id}/skill_profile endpoint.
  • Removed feedback_format=skill_clusters support for the PATCH /courses/{external_id}/skill_profile endpoint.
  • Removed response_format=skill_clusters support for the GET /vacancies/{external_id}/skill_profile endpoint.
  • Removed response_format=skill_clusters support for the GET /courses/{external_id}/skill_profile endpoint.
  • Removed the POST /reports/clustered_trending_skills endpoint.
  • Removed the POST /reports/emerging_skills endpoint.

2024-06-12

  • Removed the POST /employees/{external_id}/similar endpoint.
  • Removed the POST /vacancies/{external_id}/similar endpoint.
  • Removed the POST /courses/{external_id}/similar endpoint.

2024-06-03

  • Removed Occupation entity and its functionalities, along with the Reskilling & Deployment report

2024-05-15

  • Removed the include=skill_match_scores query parameter of POST /employees/{external_id}/matching_job_families

2024-05-13

  • Replaced the skill_type field with skill_types for the skills response body field of the GET /job_architecture/job/{job_id}/skill_profile and GET /job_architecture/job_families/{job_family_id}/skill_profile endpoints.
  • Replaced the skill_type field with skill_types for the skills field of the records response body field of the POST /job_architecture/export/jobs/skill_profiles, and POST /job_architecture/export/job_families/skill_profiles endpoints.
  • Replaced the skill_type field with skill_types for the skills field of skill_clusters field of the records response body field of the POST /job_architecture/export/jobs/skill_clusters.

2024-02-05

  • Removed the include=skill_clusters query parameter of POST /vacancies/{external_id}/matching_employees and GET /employees/{employee_external_id}/vacancies/{vacancy_external_id}/match.
  • Moved the relevant_experience response body field of the response_format=explained query parameter to the newly added include=relevant_experience query parameter of the GET /employees/{employee_external_id}/vacancies/{vacancy_external_id}/match endpoint.
  • Renamed the skill response body field to skill_name of the GET employees/{external_id}/vacancies/{external_id}/gap endpoint.

2024-01-24

  • The GET /job_architecture/job/{job_id}/skill_profile endpoint has a new Skill type called Family-Specific.
  • The GET /job_architecture/job_families/{job_family_id}/skill_profile endpoint has a new Skill type called Family-Specific.

2023-12-18

  • The skills request body field of the SkillProfileUpdateMessage of the endpoint PATCH /employees/{external_id}/skill_profile now requires either a skill or a skill_id, not both.
  • The skills request body field of the SkillProfileUpdateMessage of the endpoint PATCH /job_architecture/jobs/{job_external_id}/skill_profile now requires either a skill or a skill_id, not both.
  • The skills request body field of the SkillProfileUpdateMessage of the endpoint PATCH /job_architecture/job_families/{job_family_external_id}/skill_profile now requires either a skill or a skill_id, not both.
  • The skills request body field of the SkillProfileUpdateMessage of the endpoint PATCH /vacancies/{external_id}/skill_profile now requires either a skill or a skill_id, not both.
  • The skills request body field of the SkillProfileUpdateMessage of the endpoint PATCH /courses/{external_id}/skill_profile now requires either a skill or a skill_id, not both.
  • The skills request body field of the SkillProfileUpdateMessage of the endpoint PATCH /occupations/{external_id}/skill_profile now requires either a skill or a skill_id, not both.
  • The skills request body field of the SkillProfileUpdateMessage of the endpoint PATCH /vacancies/{external_id}/skill_profile now requires either a skill or a skill_id, not both.
  • The skills request body field of the SkillProfileUpdateMessage of the endpoint PATCH /courses/{external_id}/skill_profile now requires either a skill or a skill_id, not both.
  • The skills request body field of the SkillProfileUpdateMessage of the endpoint PATCH /occupations/{external_id}/skill_profile now requires either a skill or a skill_id, not both.

2023-11-09

  • Removed the deprecated GET /employees/{external_id}/profile/related endpoint.
  • Removed the deprecated POST /employees/{external_id}/profile/related endpoint.
  • Removed the deprecated GET /vacancies/{external_id}/profile/related endpoint.
  • Removed the deprecated POST /vacancies/{external_id}/profile/related endpoint.
  • Removed the deprecated GET /courses/{external_id}/profile/related endpoint.
  • Removed the deprecated POST /courses/{external_id}/profile/related endpoint.
  • Removed the deprecated GET /occupations/{external_id}/profile/related endpoint.
  • Removed the deprecated POST /occupations/{external_id}/profile/related endpoint.
  • Removed the deprecated GET /skills/{skill_name}/related endpoint.

2023-10-10

  • Remove POST /skill_clusters in favor of POST /taxonomy/skill_clusters.
  • Remove DELETE /skill_clusters/{skill_cluster_id} in favor of DELETE /taxonomy/skill_clusters/{skill_cluster_id}.
  • Remove PATCH /skill_clusters/{skill_cluster_id} in favor of PATCH /taxonomy/skill_clusters/{skill_cluster_id}.

2023-06-13

  • Removed the deprecated PUT {entity}/{external_id}/skill_profile endpoint.

2023-04-21

  • A skill_event with project_content now assumes a textual description of a ticket from a ticketing system (e.g. Jira, Asana, Github issues, etc.). The previous functionality of general project descriptions is removed.

2023-02-21

  • The 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.

2023-01-27

  • All instances of competency, competencies or capitalized alternatives have been renamed to skill_cluster and skill_clusters, and their capitalized versions.
  • All instances of category, categories or capitalized alternatives have been renamed to domain and domains, and their capitalized versions.

2022-10-24

  • 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.

2022-10-05

  • The competency and score fields in GET /{entity}/{external_id}/skill_profile in competencies format are now renamed to competency_name and proficiency_level respectively.

2022-07-19

  • The score field in GET /{entity}/{external_id}/skill_profile in list format is now optional.

2022-07-18

  • Deprecated GET /employees/{external_id}/recommended_courses and added POST instead.

2022-06-03

  • Removed POST /competencies/{external_id}/similar and POST /competencies/{external_id}/profile/related endpoints.

2022-05-23

  • Removed PUT /competencies/{external_id}/skill_profile feedback endpoint.

2021-11-09

  • Removed Document Entity and all its functionalities.

2021-07-28

  • Similar Entity endpoints are now POST instead of GET.
  • The response format of Similar Entity endpoints has changed from a list to an object containing two fields: the list of results and the total number of results available.

2021-06-04

  • Search endpoints now require weights in the body, in the same manner as matching endpoints.
  • Search endpoints now support a score_min_threshold query parameter, and defaults to 0.5 for this value instead of the previously internal 0.0.

2021-04-30

  • The language query parameter has become required for the creation and update of an entity.

2021-03-19

  • The response format of matching results (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.
  • The response format of search results (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.
  • The response format of list results (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.

2021-02-25

  • Employee creation (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.

2021-02-03

  • The list entity endpoints (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.

2021-01-19

  • The version endpoint now returns a body with a single field 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.

Deprecations

View all Deprecations

2023-12-10

  • Introduced a skill_id field alongside Skill names in our API endpoints to avoid ambiguities and conflicts. Using Skill names in a request body to denote or update a Skill is deprecated, please use skill_id instead. Existing functionality is backward-compatible.

    The following endpoints are affected:

    • PATCH /employees/{external_id}/skill_profile
    • PATCH /job_architecture/job_families/{job_family_external_id}/skill_profile
    • PATCH /job_architecture/jobs/{job_external_id}/skill_profile
    • PATCH /vacancies/{external_id}/skill_profile
    • PATCH /courses/{external_id}/skill_profile
    • PATCH /occupations/{external_id}/skill_profile

Compatible Changes

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.

View all compatible changes.

December 2024

  • Add the include=proficiency_level and include=critical options to the include body parameter of the POST /job_architecture/export/jobs/skill_profiles endpoint.
  • Add the include=proficiency_level and include=critical options to the include body parameter of the POST /job_architecture/export/job_families/skill_profiles endpoint.

November 2024

  • Add limit, offset, and update_low_data_availability query parameters to the GET /reports/data_maturity_scan/employee_maturity_overview and GET /reports/data_maturity_scan/job_maturity_overview endpoints.
  • Add include=skill_cluster_description parameter to the GET /taxonomy/skill_clusters endpoint.
  • Add skill_cluster_description response body field and query parameter include=skill_cluster_description to the GET taxonomy/export endpoint.
  • Add the PATCH /taxonomy/skills/{skill_id} endpoint.
  • Return the custom Skill description in the GET /taxonomy/skills, GET /taxonomy/skills/{skill_id}, and GET /taxonomy/export endpoints if one is set.
  • Add the update_skill operation type to the GET /taxonomy/changes and POST /taxonomy/apply endpoints.
  • Add include=skill_description parameter to the /taxonomy/skill_clusters/{skill_cluster_external_id}/skills endpoint.
  • Add GET /job_architecture/jobs/{job_external_id}/market_skill_profiles and POST /job_architecture/export/jobs/market_skill_profiles endpoints.
  • Add the proficiency_level and critical attributes to the request body of the PATCH /job_architecture/jobs/{job_external_id}/skill_profile endpoint.
  • Add the proficiency_level and critical attributes to the request body of the PATCH /job_architecture/job_families/{job_family_external_id}/skill_profile endpoint.
  • Add the include=proficiency_level and include=critical query parameters to the GET /job_architecture/jobs/{job_external_id}/skill_profile and GET /job_architecture/job_families/{job_family_external_id}/skill_profile endpoints.

October 2024

  • Add POST /job_architecture/jobs/metrics/adoption_metrics endpoint.
  • Add POST /employees/metrics/adoption_metrics endpoint.
  • Add source_data to skills returned in GET/job_architecture/jobs/{job_external_id}/skill_profile and GET/job_architecture/job_families/{job_family_external_id}/skill_profile endpoints.
  • Add CRUD operations for Custom Properties and Custom Property Definitions for Organisational Units.
  • Add active attribute to the Organisational Unit entity.
  • Add hierarchy as a possible response format for the GET /employees/{employee_external_id}/skill_profile endpoint.
  • Add include=custom_properties parameter to GET/job_architecture/job_families, GET/job_architecture/jobs, GET/courses, GET/vacancies, GET/employees, GET/companies, GET/taxonomy/domains, GET/taxonomy/subdomains, GET/taxonomy/skill_clusters and GET/taxonomy/skills endpoints.
  • Add output_skills_sorting parameter to GET /job_architecture/export/job_families/suggested_skill_profiles, GET /job_architecture/export/job_families/skill_profiles, GET /job_architecture/export/jobs/suggested_skill_profiles and GET /job_architecture/export/jobs/skill_profiles endpoints.
  • Deprecate the GET /job_architecture/jobs/{job_external_id}/market_skill_profile endpoint.
  • Add the vocab_update_rename_skill, vocab_update_merge_skill, and vocab_update_remove_skill operation types to the GET /taxonomy/changes endpoint.

September 2024

  • Add GET /job_architecture/jobs/{job_external_id}/matching_source_jobs endpoint.
  • Add GET /job_architecture/jobs/{job_external_id}/matching_target_jobs endpoint.
  • Add error code 400 as possible response code for DELETE /job_architecture/job_families/{job_family_external_id}/profile_data/{job_family_profile_data_external_id} for DELETE /job_architecture/jobs/{job_external_id}/profile_data/{job_profile_data_external_id} when trying to delete Skill Profile Feedback instances and respective examples for this
  • Add GET /job_architecture/job_families/{job_family_external_id}/profile_data/{job_family_profile_data_external_id} endpoint.
  • Add skill_profile_feedback as a data_type to the Job Family Profile Data of a Job Family. This new data_type may be included the responses of GET /job_architecture/job_families/{job_family_external_id}/profile_data and GET /job_architecture/job_families/{job_family_external_id}/profile_data/{job_family_profile_data_external_id}.
  • Add GET /job_architecture/jobs/{job_external_id}/profile_data/{job_profile_data_external_id} endpoint.
  • Add skill_profile_feedback as a data_type to the Job Profile Data of a Job. This new data_type may be included the responses of GET /job_architecture/jobs/{job_external_id}/profile_data and GET /job_architecture/jobs/{job_external_id}/profile_data/{job_profile_data_external_id}.
  • Add skill_id query parameter to the GET /employees and GET /organisational_units/export endpoints that allows for filtering the returned entities on whether their Skill Profile contains a certain Skill.
  • Add an experimental POST /employees/suggestions/skill endpoint that allows to find suggested, validated, and rejected Skill suggestions for Employees.
  • Add en_us, de, and fr to the list of supported values for the vocab_language query parameters in the GET /{entity}/{external_id}/skill_profile, GET /taxonomy/skill_clusters/{external_id}/skills, GET /taxonomy/skill/, and GET /taxonomy/export/ endpoints.
  • Add the low_data_availability_flag to the possible values of the include query parameter of the GET /organisational_units/export and GET /job_architecture/export endpoints.
  • Add skill_id query parameter to the GET /job_architecture/export endpoint that allows for filtering the entities on whether their Skill Profile contains a certain Skill.
  • Add source_coverage metric to the response of the GET /reports/data_maturity_scan/job_quality_matrix and GET /reports/data_maturity_scan/employee_quality_matrix endpoints.
  • Add skill_name, skill_cluster_name, subdomain_name, and domain_name to the output of GET /taxonomy/changes.
  • Add subdomain_name to output of the POST /job_architecture/export/jobs/skill_clusters, POST /export/employees/skill_clusters and GET /employees/<employee_id>/skill_profile?response_format=skill_clusters endpoints for 4-level Taxonomies.
  • Add source_data to the output of GET /jobs/{job_external_id}/suggested_skill_profile, GET /job_families/{job_family_external_id}/suggested_skill_profile, POST /job_architecture/export/jobs/suggested_skill_profiles, and POST /job_architecture/export/job_families/suggested_skill_profiles.
  • Add endpoints POST /integrations/file_load_task to upload a CSV-file from S3 into the system and GET /integrations/file_load_task/{task_id} to get the status of the File Load Task.

August 2024

  • Add skill_validation_state to the possible values of the include query parameter of the GET /job_architecture/export/jobs/skill_profiles, GET /job_architecture/export/jobs/suggested_skill_profiles, GET /job_architecture/export/job_families/skill_profiles, and GET /job_architecture/export/job_families/suggested_skill_profiles endpoints.
  • Add skill_validation_state to the possible values of the include query parameter of the GET /job_architecture/job_families/{job_family_external_id}/skill_profile and GET /job_architecture/job_families/{job_family_external_id}/suggested_skill_profile endpoints.
  • Add skill_validation_state to the possible values of the include query parameter of the GET /job_architecture/jobs/{job_external_id}/skill_profile and GET /job_architecture/jobs/{job_external_id}/suggested_skill_profile endpoints.
  • Add Employee and Job key metric reports. GET /reports/employees/key_metrics GET /reports/jobs/key_metrics GET /job_architecture/jobs/{job_external_id}/suggested_skill_profile

July 2024

  • Add CRUD operations for Organisational Units.
  • Add export endpoint GET /organisational_units/export to get the full hierarchy of the Organisational Units including the total_nr_of_employees field.
  • Added organisational_unit field to Employees that is returned in GET /employees and GET /employees/{external_id}.
  • Added query parameter organisational_unit to GET /employees to filter Employees on their linked Organisational Unit.
  • Added the low_data_availability_flag to the possible values of the include query parameter of the GET /employees/{external_id}/skill_profile and GET /job_architecture/jobs/{job_external_id}/skill_profile endpoints.
  • Added the low_data_availability_flag to the possible values of the include body parameter of the POST /export/employees/skill_profiles and POST /job_architecture/export/jobs/skill_profiles endpoints that allows including the low data availability flag in the output.
  • Added the option to upload files of data type job_description as Job Profile Data. Available in the POST /job_architecture/jobs/{job_external_id}/profile_data and PATCH /job_architecture/jobs/{job_external_id}/profile_data endpoint.
  • Added the option to upload files of data type job_family_description as Job Family Profile Data. Available in the POST /job_architecture/job_families/{job_family_external_id}/profile_data and PATCH /job_architecture/job_families/{job_family_external_id}/profile_data endpoint.

June 2024

  • Add low_data_availability attribute to the Employee entity.
  • Add low_data_availability attribute to the Job entity.
  • Added Data Maturity Scan reporting endpoints:
    • GET /reports/data_maturity_scan/employee_quality_matrix
    • GET /reports/data_maturity_scan/job_quality_matrix
    • GET /reports/data_maturity_scan/employee_maturity_overview
    • GET /reports/data_maturity_scan/job_maturity_overview
    • GET /reports/data_maturity_scan/data_improvement_actions
  • Added rejected_skills to the possible values of the include body parameter of the POST /export/employees/skill_profiles endpoint that allows including rejected Skills in the output.

May 2024

  • Add GET /employees/{employee_external_id}/jobs/{job_external_id}/match endpoint that allows to match an Employee with a Job.
  • Add POST /employees/{employee_external_id}/matching_jobs endpoint that allows to find the top matching Jobs for an Employee.
  • Add POST /job_architecture/jobs/{external_id}/matching_employees endpoint that allows to find the top matching Employees for a Job.
  • Add POST /job_architecture/job_families/{external_id}/matching_employees endpoint that allows to find the top matching Employees for a Job Family.
  • Add POST /employees/{employee_external_id}/jobs/{job_external_id}/recommended_courses endpoint that recommends Courses to address the Skill Gap between the Employee and the Job.
  • Add GET /employees/{employee_external_id}/job_families/{job_family_external_id}/match endpoint that allows to match an Employee with a Job Family.
  • Add GET /employees/{employee_external_id}/match_assigned_position endpoint that allows to match an Employee with their assigned position.
  • Add POST /export/employees/match_assigned_position endpoint that allows to match Employees with their assigned position in bulk.
  • Add output_skills_sorting body parameter to the POST /export/employees/skill_profiles endpoint, allowing alphabetical to sort the Skills in the resulting profiles alphabetically, or confidence to sort them by decreasing confidence.
  • Add is_active filter to the POST /job_architecture/export/jobs/skill_profiles, POST /job_architecture/export/jobs/suggested_skill_profiles, POST /job_architecture/export/jobs/skill_clusters, POST /job_architecture/export/job_families/skill_profiles, POST /job_architecture/export/job_families/suggested_skill_profiles, POST /export/employees/skill_profiles, POST /export/employees/skill_clusters, POST /export/courses/skill_profiles export endpoints to only include active or inactive entities in the result based on the filter value.
  • Add is_active query parameter to the GET /job_architecture/export export endpoint to only include active or inactive jobs and job families in the result.
  • Add is_active query parameter to the GET /employees, GET /vacancies, GET /courses, GET /job_architecture/jobs, GET /job_architecture/job_families list endpoints to only include active or inactive entities in the result.
  • Add include=entity and include=custom_properties query parameter to POST /employees/{external_id}/matching_job_families.
  • Removed Core as a possible value of the skill_type field of a Skill in the Job Family Skill Profile.
  • Add response_format=explained query parameter to POST /employees/{external_id}/matching_vacancies, POST /vacancies/{external_id}/matching_employees and POST /employees/{external_id}/matching_job_families, that includes missing_skills and present_skills response body fields as additional information about the matches.
  • Add include=adoption query parameter to the taxonomy/skills/{skill_id} endpoint to include the adoption of the Skill in Jobs and Employees in the response.
  • Add assigned_position_id attribute to the Employee entity.
  • Allow PATCH /employees/<employee_id>/skill_events/<event_id> on the resume_document, feedback, goal, project, certificate, learning and ticket event types.

April 2024

  • Add active attribute to Course, Employee, Job and Job Family entity.
  • Add support to display Skill Profiles in external vendor Skills on GET, using the query parameter external_vendor, for Course, Employee, Job and Job Family entities. Usage:
  • GET /employee/{employee_id}/skill_profile?external_vendor={external_vendor}
  • GET /job_architecture/jobs/{job_external_id}/skill_profile?external_vendor={external_vendor}
  • GET /job_architecture/job_families/{job_family_external_id}/skill_profile?external_vendor={external_vendor}
  • GET /courses/{external_id}/skill_profile?external_vendor={external_vendor}
  • Add support to provide feedback to Skill Profiles in external vendor Skills, using the query parameter feedback_format=external_vendor_skills, for Course, Employee, Job and Job Family entities. Usage:
    • PATCH /employee/{employee_id}/feedback_format=external_vendor_skills
    • PATCH /job_architecture/jobs/{job_external_id}/skill_profile?feedback_format=external_vendor_skills
    • PATCH /job_architecture/job_families/{job_family_external_id}/skill_profile?feedback_format=external_vendor_skills
    • PATCH /courses/{external_id}/skill_profile?feedback_format=external_vendor_skills
  • Deprecate GET /employee{employee_external_id}/vacancy/{vacancy_external_id}/recommend_courses
  • Add POST /employee{employee_external_id}/vacancy/{vacancy_external_id}/recommend_courses endpoint which makes use of an updated and improved methodology to recommend Courses.
  • Update POST /employee{employee_external_id}/recommend_courses endpoint in line with the updated and improved methodology to recommend Courses.

March 2024

  • Add POST /job_architecture/export/jobs/suggested_skill_profiles endpoint to paginate through all suggested Skill Profiles of Jobs in the API in bulk.
  • Add POST /job_architecture/export/job_families/suggested_skill_profiles endpoint to paginate through all suggested Skill Profiles of Job Families in the API in bulk.
  • The domain_namespace query parameter is available on the job_architecture/export/jobs/skill_profiles and job_architecture/export/job_families/skill_profiles endpoints.
  • When requesting an Employee Skill Profile through either GET /employee/{employee_id}/skill_profile or POST /export/employees/skill_profiles, the response will now include the source_events field on all Skills, when requesting sources. source_events provides more insights into which Skill Event contributes to which skill.

February 2024

  • Add GET /employees/{employee_id}/skill_events/{skill_event_id} endpoint to be able to get a single Skill Event of an Employee.
  • Add POST /job_architecture/export/jobs/skill_profiles endpoint to paginate through all Skill Profiles of Jobs in the API in bulk.
  • Add POST /job_architecture/export/job_families/skill_profiles endpoint to paginate through all Skill Profiles of Job Families in the API in bulk.
  • Add support for ticket Skill Events.
  • Add support for skill_notes Job Profile Data.
  • Deprecated the POST /job_architecture/export/job/skill_clusters endpoint and added the POST /job_architecture/export/jobs/skill_clusters.

January 2024

  • A source attribute can now be added to each Skill Profile feedback endpoint to indicate the source of the feedback. See all PATCH /{entity}/{entity_id}/skill_profile endpoints.
  • An include query parameter can now be added to the GET /employees/{external_id}/skill_profile endpoint to include the source Skill Events where the reported Skills are inferred from.
  • Add POST /export/employees/skill_profiles endpoint to get the Skill profiles of all Employees in the API through pagination.
  • Add the POST /skills/lookup endpoint to get corresponding UUIDs for a list of Skill names.
  • Add GET /job_architecture/job/{job_id}/suggested_skill_profile to get suggested skills for a Job.
  • Add GET /job_architecture/job_families/{job_family_id}/suggested_skill_profile to get suggested skills for a Job Family.

December 2023

  • Add the include=custom_properties query parameter to the GET /taxonomy/skills/{skill_id} endpoint to include the Custom Properties of a Skill in the response.
  • Add the include=custom_properties query parameter to the GET /taxonomy/skill_clusters/{skill_cluster_id} endpoint to include the Custom Properties of Skill Clusters in the response.
  • Add the include=custom_properties query parameter to the GET /taxonomy/subdomains/{subdomain_id} endpoint to include the Custom Properties of Subdomains in the response.
  • Add the include=custom_properties query parameter to the GET /taxonomy/domains/{domain_id} endpoint to include the Custom Properties of Domains in the response.
  • Introduced a skill_id field alongside Skill names in our API endpoints to avoid ambiguities and conflicts. All endpoints that return Skill names will now also return a skill_id field. Using Skill names in a request body to denote an update of a Skill is deprecated, please use skill_id instead.
  • Mark all /occupations endpoints as deprecated.
  • Add the vocab_language query parameter to the GET /{entity}/{external_id}/skill_profile endpoints to specify the language of the Skill names in the Skill Profile response.
  • Add the vocab_language query parameter to the GET /taxonomy/skill_clusters/{external_id}/skills endpoint to specify the language of the Skill names in the Skill Profile response.
  • Add the vocab_language query parameter to the GET /taxonomy/skill/ endpoints to specify the language of the Skill names in the Skill Profile response.
  • Add the vocab_language query parameter to the GET /taxonomy/export/ endpoints to specify the language of the Skill names in the Skill Profile response.

November 2023

  • Add the domain_namespace query parameter to GET /job_architecture/jobs/{job_external_id}/skill_profile endpoint to express the Skill Domains in either TechWolf or Taxonomy Domains.
  • Add the domain_namespace query parameter to GET /job_architecture/jobs/{job_external_id}/market_skill_profile endpoint to express the Skill Domains in either TechWolf or Taxonomy Domains.
  • Add the domain_namespace query parameter to GET /job_architecture/job_families/{job_family_external_id}/skill_profile endpoint to express the Skill domains in either TechWolf or Taxonomy Domains.
  • Add domain_name response body field and domain_namespace query parameter to GET /taxonomy/skills/{skill_id} endpoint to express the Skill Domains in either TechWolf or Taxonomy Domains.
  • Add domain_name response body field and domain_namespace query parameter to GET /taxonomy/skills endpoint to express the Skill Domains in either TechWolf or Taxonomy Domains.
  • Add the domain_namespace query parameter to GET /skills/search endpoint to express the Skill Domains in either TechWolf or Taxonomy Domains.
  • Add POST /export/courses/skill_profiles endpoint to paginate through all Skill Profiles of Courses in the API in bulk.
  • Add last_updated_with_taxonomy_changes filter to the POST /export/employees/skill_clusters and POST /job_architecture/export/job/skill_clusters endpoints.
  • Add next_starting_after field to response of POST /export/employees/skill_clusters endpoint.

October 2023

  • Add GET /job_architecture/jobs/{job_external_id}/market_skill_profile endpoint to get the market Skill Profile of a Job.
  • Update request sample for POST /reports/job_architecture_benchmark endpoint.
  • Mark all /skill_clusters endpoints as deprecated.

September 2023

  • Add skill_description response body field and query parameter include=skill_description to GET taxonomy/export.
  • Add a vacancy data type for Job Profile Data. Available in the POST /job_architecture/jobs/{job_external_id}/profile_data endpoint.
  • Add the taxonomy/changes endpoint to view all changes to the Taxonomy within a certain timeframe.
  • Add skill_id and skill_sources to Skills of response body field in GET export/employees/skill_clusters.
  • Add a POST /job_architecture/export/job/skill_clusters endpoint to fetch Job Skill clusters and Skills in bulk.
  • Add the Subdomain entity to enable a 4-level Taxonomy hierarchy.
  • Add CRUD operations for Custom Properties and Custom Property Definitions for the following Taxonomy entities: taxonomy/domains, taxonomy/subdomains, taxonomy/skill_clusters, and taxonomy/skills.
  • Add external_id and skill_vocab fields to the taxonomy/export and taxonomy/skill_cluster/<skill_custer_id>/skills endpoints.

August 2023

  • Add skill_id response body field and query parameter search_method to POST skills/search.
  • Add GET and POST /taxonomy/domains to see all Domains and create a new Domain respectively. Add GET, PATCH and DELETE /taxonomy/domains/{external_id} to see a single Domain, update a Domain and delete a Domain respectively.
  • Add GET and POST /taxonomy/skill_clusters to see all Skill Clusters and create a new Skill Cluster respectively. Add GET, PATCH and DELETE /taxonomy/skill_clusters/{external_id} to see a single Skill Cluster, update a Skill Cluster and delete a Skill Cluster respectively.
  • Add GET /taxonomy/skill_clusters/{external_id}/skills to see all Skills in a Skill Cluster. Add PUT and DELETE /taxonomy/skill_clusters/{external_id}/skills/{skill_external_id} to add a Skill to a Skill Cluster and remove a Skill from a Skill Cluster respectively.
  • Add GET /taxonomy/skills/{concept_uuid} and GET /taxonomy/skills to get meta information of a single Skill or multiple Skills.
  • Add GET /taxonomy/export to export the full structure of the Taxonomy.
  • Add POST /taxonomy/apply to apply a set of changes to the Taxonomy.
  • Add skill_id to the response body of GET job_architecture/jobs/{job_external_id}/skill_profile and GET job_architecture/job_families/{job_family_external_id}/skill_profile.
  • Add functionality for Jobs to not be linked to a Job Family.
  • Skill Profile feedback in Skill Cluster format (PATCH /employees/{external_id}/skill_profile?feedback_format=skill_clusters) can now be given with a skill_cluster_id.
  • Add GET /job_architecture/export.

July 2023

  • Add POST /reports/job_architecture_benchmark.
  • Add the include=skill_match_scores query parameter to the POST /employees/{external_id}/matching_job_families, which includes match scores between the Employee and individual Skills in the response.

June 2023

  • Add POST /reports/internal_talent_mobility.
  • Update POST /reports/skill_inventory.
  • Add GET /employees/{employee_external_id}/interactions and GET /employees/{employee_external_id}/interactions/{interaction_external_id} endpoints, which allow for listing all interactions of an Employee and getting a single Interaction respectively.
  • Deprecated the PUT /employees/{external_id}/skill_profile, PUT /vacancies/{external_id}/skill_profile, PUT /courses/{external_id}/skill_profile and PUT /occupations/{external_id}/skill_profile endpoints.
  • Add POST /employees/{employee_external_id}/matching_job_families endpoint, which calculates and returns matching Job Families for an Employee. Weights are not customizable, but filtering on Custom Properties, external IDs and the last_updated field is allowed.
  • Add the used_event_types body parameter to the POST /employees/{employee_id}/matching_vacancies endpoint, allowing to use only events of certain types to be taken into account when calculating matching Vacancies for an Employee.

May 2023

  • Vacancy searching now works based on literal text matching by default. Skills based searching is still possible, as well as a combination of both.
  • Allow PATCH on SkillEvents with type skill_notes.
  • Add progress to the POST /reports/skill_inventory endpoint.
  • Add skill_cluster_id to the output of Employee, Vacancy, Course, Occupation GET /{entity}/{external_id}/skill_profile?response_format=skill_clusters endpoints, the POST /export/employees/skill_clusters endpoint, and the POST /vacancies/{external_id}/matching_employees?include=skill_clusters endpoint.
  • Add POST /employees/{employee_external_id}/interactions and DELETE /employees/{employee_external_id}/interactions/{interaction_external_id} endpoints, which allow the creation and deletion of Interactions between the Employee and a title or Vacancy.
  • Add PATCH /job_architecture/job_families/{job_family_external_id}/skill_profile and PATCH /job_architecture/job/{job_external_id}/skill_profile which allow feedback on the Skill Profile of Job Families and Jobs respectively.
  • Add a breakdown of the matching Vacancies for a company in the results of the /companies/search endpoint.

April 2023

  • Courses can now have a source field. When creating Skill Events from a Course with a source, the source of the Course will be used if no source is provided in the Skill Event.
  • Add POST /reports/skill_inventory endpoint to get the Skill Inventory report.

March 2023

  • Add Update /employees/{employee_external_id}/skill_events/{skill_event_external_id} endpoint to support updating an Employee's Skill Event.
  • Add Job and Job Family entities to job_architecture/jobs and job_architecture/job_families endpoints respectively.
  • Add Job Profile Data and Job Family Profile Data to the job_architecture/job_families/{job_family_external_id}/profile_data and job_architecture/jobs/{job_external_id}/profile_data endpoints respectively.
  • Add custom_property_is_in_list filter to POST employees/{employee_external_id}/recommended_courses.
  • Add the property_value and assigned_position fields of an Employee to the Skill Cluster Adoption report (reports/employees/skill_cluster_adoption).
  • Add GET job_architecture/jobs/{job_external_id}/skill_profile and GET job_architecture/job_families/{job_family_external_id}/skill_profile endpoints
  • Add match_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 have been added to the Job and Job Family entities. They can be requested by using the 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.
  • Add Update /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.
  • Create or update working history Skill Events using a job_id at POST /employees/{employee_external_id}/skill_events and PATCH /employees/{employee_external_id}/skill_events/{skill_event_external_id} respectively

February 2023

  • Add the multi_max_geo_distances filter in matching for endpoints /employees/{external_id}/matching_vacancies and /vacancies/{external_id}/matching_employees.
  • Add the Succession Risk Report available under the /reports/succession_risk endpoint.
  • Add the rejected_skills include option to the POST /export/employees/skill_clusters endpoint.
  • Add the option to create learning Skill Events from a course_id

January 2023

  • Add competency_type in GET /competencies and GET /competencies/{external_id}.
  • Add support for specifying the location in LocationAddress format in the MaxGeoDistanceFilter.
  • Add the Replacement Risk Report available under the /reports/replacement_risk endpoint.

December 2022

  • The Get Skill Profile endpoints /entity_type/{external_id}/skill_profile with response_format=competencies now return Skill information.
  • Add custom_property_list_overlap filter for Employee and Vacancy matching.
  • Add 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.
  • Add 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.
  • Add exclude_match_feedback filter to POST employees/{employee_external_id}/recommended_courses and POST employees/{employee_external_id}/matching_vacancies
  • Add DELETE endpoints to employees/{employee_external_id}/vacancies/{vacancy_external_id}/match_feedback and employees/{employee_external_id}/courses/{course_external_id}/match_feedback
  • Add include=competencies query parameter to vacancies/{vacancy_external_id}/matching_employees.
  • Add include query parameter for the employees/{employee_external_id}/similar endpoint. Possible values are: entity, competencies and custom_properties.
  • Add validation_state to Skills returned from GET employees/{employee_external_id}/skill_profile endpoint in list and competency format.
  • Add validation_state to Skills returned from POST export/employees/competencies endpoint.
  • Add exclude_match_feedback filter to the employees/search and vacancies/search endpoints.
  • Add related_skills to include in POST export/employees/competencies endpoint.
  • Adding a 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
  • Add 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.

November 2022

  • Add the skill_notes event type.
  • Add the Competency Adoption Report available under the /reports/employees/competency_adoption endpoint.
  • Add 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.
  • Add PATCH endpoint to vacancies/{external_id}/skill_profile, occupations/{external_id}/skill_profile and courses/{external_id}/skill_profile.
  • Add include=relevant_experience query parameter to employees/{employee_external_id}/matching_vacancies and vacancies/{vacancy_external_id}/matching_employees.
  • For LocationAddress inputs, city can be used instead of postal_code now, making one of them required instead of having postal_code required.
  • The Get Skill Profile endpoints /entity_type/{ID}/skill_profile with response_format=competencies now return Skill category information.

October 2022

  • Add a not equals option (neq) to the custom_property filter.
  • Add sources in the /export/employees/competencies endpoint, to be able to track from which Skill Events the given competencies originate from.
  • Add support for addresses as an alternative for location coordinates.

August 2022

  • Add include query parameter to vacancies/{vacancy_external_id}/matching_employees to allow retrieving Employee information without extra calls.
  • Add include=location query parameter option to employees/{employee_external_id}/matching_vacancies
  • Add a 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.

July 2022

  • Add a category field to the POST /competencies and PATCH /competencies/{external_id} endpoints to change the category of a competency.

June 2022

  • Add a PATCH endpoint for Skill Profile feedback on Employees such that Skill profiles can be partially updated.
  • Add last_updated filter for Employee and Vacancy matching.
  • Add an experimental POST /export/employees/competencies endpoint for extracting Employee competencies and Skills from the API.

May 2022

  • Change how the GET /competencies/{external_id}/skill_profile endpoint returns Skill Profiles for clients who use a Taxonomy managed by TechWolf.

April 2022

  • Add support for project and certificate Skill Events.
  • Add support for explicit working_history, education_history, and resume_document Skill Events.

March 2022

  • Add support for feedback and goal Skill Events.

February 2022

  • Add include query parameter to employees/{employee_external_id}/recommended_courses to allow retrieving Course information without extra calls.

January 2022

  • Add Delete /employees/{employee_external_id}/skill_events/{skill_event_external_id} endpoint to support removing an Employee's Skill Event from the API.
  • Add GET /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.
  • Add POST /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.

December 2021

  • Add /employees/{employee_external_id}/recommended_courses endpoint, returning the recommended Courses to improve an Employee's Skill Profile.
  • Removed Certificates from Employees and all its functionalities.
  • The Custom Property weights for the matching endpoints now support the 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.
  • The matching endpoints now support the language weight configurations. Match scores are increased when the matching entities' language levels fall between a range of the source entity language levels.

October 2021

  • All endpoints supporting the explained response format now return additional category information when the explained response format is requested.
  • The Get Skill Profile endpoints /entity_type/{ID}/skill_profile now support response_format=categories and thereby return Skill category information.
  • The Skill Search endpoint /skills/search now returns Skill category information.
  • The Search endpoints now support German (de) language.
  • You can now create and update entities in German with the language=de query parameter.
  • The Reskilling & Deployment report now provides information for key missing Skills on an Employee-level.

September 2021

  • The /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.
  • Add external Company hiring activity profiling with NACE-codes under the /companies/{external_id}/nace endpoint.
  • Add the Reskilling & Deployment Report available under the /reports/reskilling_and_deployment endpoint.
  • Reskilling & Deployment report now supports a Qlik-friendly CSV output format.
  • Reskilling & Deployment report now supports score_min_threshold.
  • The 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.

August 2021

  • The Employability metric now takes into account the supply of Employees that could fill in the demand as well.
  • The Search endpoints now support an optional language query parameter, to indicate the language of the input text.

July 2021

  • companies/:external_id/desired_functions now supports the PUT method. Calling this method replaces all existing desired function Vacancies with the new set.
  • Similar Entity endpoints now support score_min_threshold.
  • Similar Entity endpoints now support Custom Property filters.
  • Similar Entity endpoints for Employees and Vacancies now support location and language based filters.
  • Similar Entity endpoints now support Custom Property weights.
  • Similar Entity endpoints for Employees and Vacancies now support location weight.

June 2021

  • Add the option to override the location used for geo-distance calculation in matching request filters.
  • max_geo_distance field on Employee entities was deprecated.
  • remove max_geo_distance field on Employee entities.

May 2021

  • You can now use a Vacancy-prefix when looking for matching external Companies such that filtering and weighting is based on the Custom Properties of the Vacancies associated with the external company, rather than the external company itself.

April 2021

  • Add strict parameter to entity creation and update operations (Employees, Competencies, Courses, Documents, Occupations, Vacancies).
  • Change the outward facing side of (non-)desired functions during Employee creation. Output and input now better reflect internal results.
  • Add languages field to external Companies.
  • You can now add a geo distance weight to the matching endpoints. Match scores are increased when two entities are in proximity to each other.
  • You can now add Custom Property weights to the matching endpoints. Match scores are increased when the applied condition on the matching entities' specified Custom Property checks out.
  • Extraction language can now be specified for the POST companies/{external_id}/desired_functions endpoint.

March 2021

  • You can now specify the non-desired functions when creating or updating an Employee to take their negative preference into account when matching to new positions.
  • You can now modify the non-desired functions boost used during matching by setting the appropriate weight on the match endpoints employees/{external_id}/matching_vacancies and vacancies/{external_id}/matching_employees.
  • You can now submit multiple desired functions linked to a given External Company through a single multiline string using the new request_format=free_text query parameter on the /companies/{external_id}/desired_functions endpoint.
  • You can now submit free text, multiline strings desired functions & non-desired functions for an Employee through the desired_functions & non_desired_functions attributes.
  • You can now search for Vacancies and external Companies based on free text, through the endpoints /vacancies/search and /companies/search.
  • You can now add datetime-typed Custom Properties.
  • You can now provide a list of filters when searching for entities using free text through the endpoints /employees/search, /vacancies/search and /companies/search.
  • You can now provide multiple values (as a list) when using the 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.
  • You can now specify the comparison operator when using the custom_property filter. If no operator is specified, the filter defaults to the equals operator.
  • You can now specify an offset on matching endpoints for employees ,vacancies and companies.
  • You can now specify an offset on search endpoints for employees,vacancies and companies.
  • You can now pass the 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 ''.
  • External Companies now support Custom Properties.
  • (Non-)desired function score boosting is now calculated relative to the relevancy of the function title, instead of a binary boost on occurrence of a title.
  • You can now provide a list of filters at the match endpoints 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.
  • You can now provide a list of weights at the match endpoints 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).
  • Custom Property definitions are no longer allowed to contain double underscores in their name.
  • You can now set the weight of the skills-related match component contributing to the final match score (this was previously hard-coded to 1.0).
  • You can now filter on the Custom Properties of External Companies linked to a Vacancy, when matching Employees to Vacancies and vice versa.

February 2021

  • You can now search for Employees based on free text, through the endpoint /employees/search.
  • You can add an (optional) External Company link to a Vacancy, through the endpoint /vacancies and attribute company.
  • You can now list, create, retrieve, update and delete External Companies through the endpoints /companies/*.
  • You can now optionally mark Vacancies as inactive using the field active. When this is field has the value false, the Vacancy will not be used for matching.
  • Deleting External Companies now deletes all linked inactive Vacancies in cascade.
  • You can now find the best Employees for a given External Company with an overview of its matching Vacancies, through the endpoint /companies/{external_id}/matching_employees.
  • You can now find the best External Companies for a given Employee with an overview of the matching Vacancies per External Company, through the endpoint /employees/{external_id}/matching_companies.
  • You can now upload desired functions as inactive Vacancies linked to a given External Company, through the endpoint /companies/{external_id}/desired_functions.
  • You can now see when an entity was last updated by checking the attribute last_updated upon entity retrieval.
  • You can now provide a list of filters at the match endpoints 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.
  • You can now provide a list of languages with proficiency levels during Vacancy creation.
  • You can now provide a list of weights at the match endpoints 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).
  • The POST-type methods on matching_vacancies and matching_employees are now the preferred way to request the matches.
  • You can now add a list of strings as a Custom Property.
  • You can now explicitly provide the language used in Skill Profile extraction during entity creation/update using the language query parameter. Supported languages are auto, nl, fr and en.
  • You can now optionally add a Job description to the entries in the working_history of an Employee. These descriptions will also be used for Skill extraction.

January 2021

  • You can add a (optional) 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.

Domains

Domains in the Skill Engine API allow enterprise customers to adapt Domains in their Taxonomy.

Custom Properties are supported for this entity.

List Domains

Get a list of all Domains available in the system.

Request
Security:
application (read)
query Parameters
limit
integer [ 1 .. 200 ]
Default: 100

The maximal number of entities returned, ordered by the last_updated field and external_id.

Example: limit=50
offset
integer >= 0
Default: 0

The applied offset for returned entities, results starting from offset up to offset + limit.

include
Array of strings

Additional entity attributes that will be included in the response body. This query parameter can be added multiple times to include more attributes.

Items Value: "custom_properties"
Example: include=custom_properties
Responses
200OK
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
get/taxonomy/domains
Response samples
application/json
{
  • "count": 2,
  • "results": [
    ]
}

Create Domain

Create a new Domain in the system.

Request
Security:
application (write)
Request Body schema: application/json
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

domain_name
required
string [ 1 .. 255 ] characters

Name of the Domain.

Responses
204No Content
400Bad Request
401Unauthorized
403Forbidden
405Method Not Allowed
409Conflict
503Service Unavailable
post/taxonomy/domains
Request samples
application/json
{
  • "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "domain_name": "IT & Engineering"
}
Response samples
application/json
[
  • {
    }
]

Get Domain

Get Domain information stored in the system.

Request
Security:
application (read)
path Parameters
domain_external_id
required
any

The unique Domain ID in your system, consisting of alphanumeric characters, hyphens and underscores.

query Parameters
include
Array of strings

Additional Domain attributes that will be included in the response body. This query parameter can be added multiple times to include more attributes.

Items Value: "custom_properties"
Example: include=custom_properties
Responses
200OK
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
get/taxonomy/domains/{domain_external_id}
Response samples
application/json
{
  • "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "domain_name": "IT & Engineering",
  • "last_updated": "2021-01-21T17:32:28.000Z"
}

Update Domain

Submit the most up-to-date Domain information. Any field that is present will overwrite existing values within the system, while absent fields will be left as is.

Request
Security:
application (write)
path Parameters
domain_external_id
required
any

The unique Domain ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Request Body schema: application/json
domain_name
string [ 1 .. 255 ] characters

Name of the Domain.

Responses
204No Content
400Bad request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
patch/taxonomy/domains/{domain_external_id}
Request samples
application/json
{
  • "domain_name": "IT - HR"
}
Response samples
application/json
[
  • {
    }
]

Delete Domain

Delete Domain information stored inside the system. By deleting a Domain, all Skill Clusters linked to this Domain are also deleted.

Request
Security:
application (write)
path Parameters
domain_external_id
required
any

The unique Domain ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Responses
204No Content
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
delete/taxonomy/domains/{domain_external_id}
Response samples
application/json
[
  • {
    }
]

Subdomains

Subdomains in the Skill Engine API allow enterprise customers to adapt Subdomains in their Taxonomy.

By default, Subdomains are disabled. The 3-level Taxonomy only consists of Domains, Skill Clusters and Skills. Enabling Subdomains allows a 4-level Taxonomy consisting of Domains, Subdomains, Skill Clusters and Skills. To enable Subdomains on your tenants, contact support@techwolf.ai!

Custom Properties are supported for this entity.

List Subdomains

Get a list of all Subdomains available in the system.

Request
Security:
application (read)
query Parameters
limit
integer [ 1 .. 200 ]
Default: 100

The maximal number of entities returned, ordered by the last_updated field and external_id.

Example: limit=50
offset
integer >= 0
Default: 0

The applied offset for returned entities, results starting from offset up to offset + limit.

include
Array of strings

Additional entity attributes that will be included in the response body. This query parameter can be added multiple times to include more attributes.

Items Value: "custom_properties"
Example: include=custom_properties
Responses
200OK
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
get/taxonomy/subdomains
Response samples
application/json
{
  • "count": 2,
  • "results": [
    ]
}

Create Subdomain

Create a new Subdomain in the system that is linked to a Domain.

Request
Security:
application (write)
Request Body schema: application/json
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

domain_id
required
string <uuid> [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID of a Domain to which this Subdomain is linked, consisting of alphanumeric characters, hyphens and underscores.

subdomain_name
required
string [ 1 .. 255 ] characters

Name of the Subdomain.

Responses
204No Content
400Bad Request
401Unauthorized
403Forbidden
405Method Not Allowed
409Conflict
503Service Unavailable
post/taxonomy/subdomains
Request samples
application/json
{
  • "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "domain_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "subdomain_name": "Research"
}
Response samples
application/json
[
  • {
    }
]

Get Subdomain

Get the Subdomain information stored in the system.

Request
Security:
application (read)
path Parameters
subdomain_external_id
required
any

The unique Subdomain ID in your system, consisting of alphanumeric characters, hyphens and underscores.

query Parameters
include
Array of strings

Additional Subdomain attributes that will be included in the response body. This query parameter can be added multiple times to include more attributes.

Items Value: "custom_properties"
Example: include=custom_properties
Responses
200OK
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
get/taxonomy/subdomains/{subdomain_external_id}
Response samples
application/json
{
  • "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "domain_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "subdomain_name": "Database Management",
  • "last_updated": "2021-01-21T17:32:28.000Z"
}

Update Subdomain

Submit the most up-to-date Subdomain information. Any field that is present will overwrite existing values within the system, while absent fields will be left as is.

Request
Security:
application (write)
path Parameters
subdomain_external_id
required
any

The unique Subdomain ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Request Body schema: application/json
domain_id
string <uuid> [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID of a Domain to which this Subdomain is linked, consisting of alphanumeric characters, hyphens and underscores.

subdomain_name
string [ 1 .. 255 ] characters

Name of the Subdomain.

Responses
204No Content
400Bad request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
patch/taxonomy/subdomains/{subdomain_external_id}
Request samples
application/json
{
  • "domain_id": "b9734761-eb84-42dc-a79f-5e7b1fe897b7",
  • "subdomain_name": "Research"
}
Response samples
application/json
[
  • {
    }
]

Delete Subdomain

Delete Subdomain information stored inside the system.

Request
Security:
application (write)
path Parameters
subdomain_external_id
required
any

The unique Subdomain ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Responses
204No Content
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
delete/taxonomy/subdomains/{subdomain_external_id}
Response samples
application/json
[
  • {
    }
]

Skill Clusters

Skill Clusters in the Skill Engine API allow enterprise customers to adapt Skill Clusters in their Taxonomy.

Custom Properties are supported for this entity.

List Skill Clusters

Get a list of all Skill Clusters available in the system.

Request
Security:
application (read)
query Parameters
limit
integer [ 1 .. 200 ]
Default: 100

The maximal number of entities returned, ordered by the last_updated field and external_id.

Example: limit=50
offset
integer >= 0
Default: 0

The applied offset for returned entities, results starting from offset up to offset + limit.

include
Array of strings

Additional Skill Cluster info attributes that will be included in the response body. This query parameter can be added multiple times to include more attributes.

Items Enum: "skill_cluster_description" "custom_properties"
Example: include=skill_cluster_description&include=custom_properties
Responses
200OK
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
get/taxonomy/skill_clusters
Response samples
application/json
{
  • "count": 2,
  • "results": [
    ]
}

Create Skill Cluster

Create a new Skill Cluster in the system that is linked to a Domain or Subdomain. A Skill Cluster must be linked to a Domain in a 3-level Taxonomy, and it can only be linked to a Subdomain in a 4-level Taxonomy.

Request
Security:
application (write)
Request Body schema: application/json
One of:
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

domain_id
required
string <uuid> [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID of a Domain to which this Skill Cluster is linked, consisting of alphanumeric characters, hyphens and underscores.

skill_cluster_name
required
string [ 1 .. 255 ] characters

Name of the Skill Cluster.

skill_cluster_description
required
string

Description of the Skill Cluster.

Responses
204No Content
400Bad Request
401Unauthorized
403Forbidden
405Method Not Allowed
409Conflict
503Service Unavailable
post/taxonomy/skill_clusters
Request samples
application/json
{
  • "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "domain_id": "a84574fd5-eb84-42dc-a79f-595965eacb564",
  • "skill_cluster_name": "Database Management",
  • "skill_cluster_description": "Knowledge of actions a business takes to manipulate and control data to meet necessary conditions throughout the entire data lifecycle."
}
Response samples
application/json
[
  • {
    }
]

Get Skill Cluster

Get the Skill Cluster information stored in the system.

Request
Security:
application (read)
path Parameters
skill_cluster_external_id
required
any

The unique Skill Cluster ID in your system, consisting of alphanumeric characters, hyphens and underscores.

query Parameters
include
Array of strings

Additional Skill Cluster attributes that will be included in the response body. This query parameter can be added multiple times to include more attributes.

Items Value: "custom_properties"
Example: include=custom_properties
Responses
200OK
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
get/taxonomy/skill_clusters/{skill_cluster_external_id}
Response samples
application/json
{
  • "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "domain_id": "5cbdbdbe-5f44-4423-8157-520f8a2f429a",
  • "skill_cluster_name": "Database Management",
  • "skill_cluster_description": "Knowledge of actions a business takes to manipulate and control data to meet necessary conditions throughout the entire data lifecycle.",
  • "last_updated": "2021-01-21T17:32:28.000Z"
}

Update Skill Cluster

Submit the most up-to-date Skill Cluster information. Any field that is present will overwrite existing values within the system, while absent fields will be left as is.

Request
Security:
application (write)
path Parameters
skill_cluster_external_id
required
any

The unique Skill Cluster ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Request Body schema: application/json
One of:
domain_id
string <uuid> [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID of a Domain to which this Skill Cluster is linked, consisting of alphanumeric characters, hyphens and underscores.

skill_cluster_name
string [ 1 .. 255 ] characters

Name of the Skill Cluster.

skill_cluster_description
string

Description of the Skill Cluster.

Responses
204No Content
400Bad request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
patch/taxonomy/skill_clusters/{skill_cluster_external_id}
Request samples
application/json
{
  • "domain_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "skill_cluster_name": "Database Management",
  • "skill_cluster_description": "Knowledge of actions a business takes to manipulate and control data to meet necessary conditions throughout the entire data lifecycle."
}
Response samples
application/json
[
  • {
    }
]

Delete Skill Cluster

Delete Skill Cluster information stored inside the system.

Request
Security:
application (write)
path Parameters
skill_cluster_external_id
required
any

The unique Skill Cluster ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Responses
204No Content
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
delete/taxonomy/skill_clusters/{skill_cluster_external_id}
Response samples
application/json
[
  • {
    }
]

List Skills

Get a list of all Skills linked to a Skill Cluster.

Request
Security:
application (read)
path Parameters
skill_cluster_external_id
required
any

The unique Skill Cluster ID in your system, consisting of alphanumeric characters, hyphens and underscores.

query Parameters
limit
integer [ 1 .. 200 ]
Default: 100

The maximal number of entities returned, ordered by the skill_id field.

Example: limit=50
offset
integer >= 0
Default: 0

The applied offset for returned entities, results starting from offset up to offset + limit.

vocab_language
string
Default: "en_uk"

The display language used for Skill names. Altering the vocabulary language does not change the Skill Profile; it solely changes the way it is displayed. If not specified, the default language (en_uk) will be used. The en language is an alias for en_uk.

Enum: "en" "en_uk" "en_us" "de" "fr" "nl"
Example: vocab_language=en_uk
include
Array of strings

Additional Skill info attributes that will be included in the response body. This query parameter can be added multiple times to include more attributes.

Items Value: "skill_description"
Example: include=skill_description
Responses
200OK
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
get/taxonomy/skill_clusters/{skill_cluster_external_id}/skills
Response samples
application/json
{
  • "count": 2,
  • "results": [
    ]
}

Add Skill

Add a Skill to a Skill Cluster.

Request
Security:
application (write)
path Parameters
skill_cluster_external_id
required
string

The unique Skill Cluster ID in your system, consisting of alphanumeric characters, hyphens and underscores.

skill_id
required
string <uuid> (SkillId) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The universal unique ID of the Skill, consisting of alphanumeric characters, hyphens and underscores. The Skill name connected to this id can be identified by either using the Skill Search endpoint or in any response body that contains that Skill.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
Responses
204No Content
400Bad request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
put/taxonomy/skill_clusters/{skill_cluster_external_id}/skills/{skill_id}
Response samples
application/json
[
  • {
    }
]

Remove Skill

Remove a Skill from a Skill Cluster.

Request
Security:
application (write)
path Parameters
skill_cluster_external_id
required
any

The unique Skill Cluster ID in your system, consisting of alphanumeric characters, hyphens and underscores.

skill_id
required
string <uuid> (SkillId) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The universal unique ID of the Skill, consisting of alphanumeric characters, hyphens and underscores. The Skill name connected to this id can be identified by either using the Skill Search endpoint or in any response body that contains that Skill.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
Responses
204No Content
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
delete/taxonomy/skill_clusters/{skill_cluster_external_id}/skills/{skill_id}
Response samples
application/json
[
  • {
    }
]

Skills

Skills in the Skill Engine API allow enterprise customers to get Skills in their Taxonomy.

Custom Properties are supported for this entity.

List Skills

Get the Skill information stored inside the system for multiple Skills.

Request
Security:
application (read)
query Parameters
limit
integer [ 1 .. 200 ]
Default: 100

The maximal number of entities returned, ordered by the skill_id field.

Example: limit=50
offset
integer >= 0
Default: 0

The applied offset for returned entities, results starting from offset up to offset + limit.

vocab_language
string
Default: "en_uk"

The display language used for Skill names. Altering the vocabulary language does not change the Skill Profile; it solely changes the way it is displayed. If not specified, the default language (en_uk) will be used. The en language is an alias for en_uk.

Enum: "en" "en_uk" "en_us" "de" "fr" "nl"
Example: vocab_language=en_uk
include
Array of strings

Additional Skill info attributes that will be included in the response body. This query parameter can be added multiple times to include more attributes.

Items Enum: "skill_description" "custom_properties"
Example: include=skill_description&include=custom_properties
domain_namespace
string
Default: "techwolf"

The Domain namespace determines the Domains the Skills will be mapped to. Using techwolf will map them to the default TechWolf domains. Using taxonomy will map them to the custom Domains defined in your Taxonomy. Using adaptive will map the Skills to the Domains in the custom Taxonomy if there is one present, otherwise it will fall back to the default Techwolf Domains.

Enum: "techwolf" "taxonomy" "adaptive"
Example: domain_namespace=taxonomy
Responses
200OK
401Unauthorized
403Forbidden
405Method Not Allowed
422Unprocessable entity
503Service Unavailable
get/taxonomy/skills
Response samples
application/json
{
  • "results": [
    ],
  • "count": 2
}

Get Skill

Get the Skill information stored inside the Vocabulary. Meta information such as the adoption of the Skill can also be requested.

Request
Security:
application (read)
path Parameters
skill_id
required
string <uuid> (SkillId) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The universal unique ID of the Skill, consisting of alphanumeric characters, hyphens and underscores. The Skill name connected to this id can be identified by either using the Skill Search endpoint or in any response body that contains that Skill.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
include
Array of strings

Additional Skill attributes that will be included in the response body. This query parameter can be added multiple times to include more attributes.

Items Enum: "custom_properties" "adoption"
Example: include=custom_properties
vocab_language
string
Default: "en_uk"

The display language used for Skill names. Altering the vocabulary language does not change the Skill Profile; it solely changes the way it is displayed. If not specified, the default language (en_uk) will be used. The en language is an alias for en_uk.

Enum: "en" "en_uk" "en_us" "de" "fr" "nl"
Example: vocab_language=en_uk
domain_namespace
string
Default: "techwolf"

The Domain namespace determines the Domains the Skills will be mapped to. Using techwolf will map them to the default TechWolf domains. Using taxonomy will map them to the custom Domains defined in your Taxonomy. Using adaptive will map the Skills to the Domains in the custom Taxonomy if there is one present, otherwise it will fall back to the default Techwolf Domains.

Enum: "techwolf" "taxonomy" "adaptive"
Example: domain_namespace=taxonomy
Responses
200OK
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
422Unprocessable entity
503Service Unavailable
get/taxonomy/skills/{skill_id}
Response samples
application/json
{
  • "external_id": null,
  • "skill_id": "c8c4b3a1-2d55-4dde-a71c-d7129c675a77",
  • "skill_name": "SQL",
  • "skill_vocab": "TechWolf",
  • "skill_description": "SQL is a standard database query language.The Skill \\\"SQL\\\" requires the ability to write and execute SQL queries.",
  • "domain_name": "Information Technology"
}

Update Skill

Submit the most up-to-date skill description. The description field will overwrite the existing value in the system, while any other fields will remain unchanged. To revert to the default description provided by TechWolf, set this field to null.

Request
Security:
application (write)
path Parameters
skill_id
required
string <uuid> (SkillId) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The universal unique ID of the Skill, consisting of alphanumeric characters, hyphens and underscores. The Skill name connected to this id can be identified by either using the Skill Search endpoint or in any response body that contains that Skill.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
Request Body schema: application/json
skill_description
string or null

Description of the Skill. Setting the Skill description to null will reset it to the default description provided by TechWolf. Please note that updating the description of a Skill within one Skill Cluster will apply that change across all other Skill Clusters containing the same Skill.

Responses
204No Content
400Bad request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
patch/taxonomy/skills/{skill_id}
Request samples
application/json
{
  • "skill_description": "SQL is a standard database query language. The Skill \"SQL\" requires the ability to write and execute SQL queries."
}
Response samples
application/json
[
  • {
    }
]

Taxonomy operations

Taxonomy operations can be used to view or edit large parts of the Taxonomy.

Get Taxonomy changes

Get a list of changes to the Taxonomy within a certain timeframe.

Request
Security:
application (read)
query Parameters
limit
integer [ 1 .. 200 ]
Default: 100

The maximal number of Taxonomy changes returned, ordered by their timestamp.

Example: limit=50
offset
integer >= 0
Default: 0

The applied offset for the returned Taxonomy changes, results starting from offset up to offset + limit.

required
string or string

The earliest timestamp (in IS08601 format) for which you want to retrieve Taxonomy changes.

Example: timestamp_from=2021-01-21T00:00:00.000Z
required
string or string

The latest timestamp (in IS08601 format) for which you want to retrieve Taxonomy changes.

Example: timestamp_to=2022-02-22T00:00:00.000Z
Responses
200OK
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
get/taxonomy/changes
Response samples
application/json
{
  • "count": 1,
  • "changes": [
    ]
}

Apply Taxonomy changes

Apply a set of changes to the Taxonomy in the system. The changes are applied in the order they are given in the request body.

Request
Security:
application (write)
Request Body schema: application/json
One of:
required
Array of objects (ApplyChange3level)
Responses
204No Content
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
422Unprocessable entity
503Service Unavailable
post/taxonomy/apply
Request samples
application/json
{
  • "changes": [
    ]
}
Response samples
application/json
[
  • {
    }
]

CRUD

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.

Custom Properties are supported for this entity.

List Employees

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.

Request
Security:
application (read)
query Parameters
limit
integer [ 1 .. 200 ]
Default: 100

The maximal number of entities returned, ordered by the last_updated field and external_id.

Example: limit=50
offset
integer >= 0
Default: 0

The applied offset for returned entities, results starting from offset up to offset + limit.

is_active
boolean
Default: "None"

This parameter can be used to only include entities with the active attribute set to true or false. If the parameter is not set, all entities will be included.

Example: is_active=true
organisational_unit
string

This parameter can be used to only include Employees linked to the specified organisational_unit. If organisational_unit="null", only Employees without a linked Organisatioanl Unit are included. If the parameter is not set, all entities will be included.

Example: organisational_unit=c3903505-eb84-42dc-a79f-5d8b1fe897b7
skill_id
string <uuid> [ 1 .. 100 ] characters

The unique ID of a Skill, consisting of alphanumeric characters and hyphens. Setting this query parameter will only include Employees that have this Skill in their Skill Profile.

Example: skill_id=a3903505-eb84-42dc-a79f-5e7b1fe897b7
include
Array of strings

Additional entity attributes that will be included in the response body. This query parameter can be added multiple times to include more attributes.

Items Value: "custom_properties"
Example: include=custom_properties
Responses
200OK
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
get/employees
Response samples
application/json
{
  • "count": 3,
  • "results": [
    ]
}

Create Employee

Submit new Employee information to initialise their Skill Profile inside the Skill Engine API.

Request
Security:
application (write)
query Parameters
language
required
string

The language of the input data, which has an impact on the Skill extraction. auto will automatically detect the language used in the provided data.

Enum: "auto" "nl" "fr" "en" "de"
Example: language=en
strict
boolean
Default: true

If strict is enabled, entity creation will fail when a Skill Profile cannot be constructed. If strict is set to false, failed Skill Profile creation will still result in entity creation, but the Skill Profile will be empty.

Request Body schema: application/json
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

assigned_position
string or null (AssignedPositionCRUD) [ 1 .. 255 ] characters

Job title of the Employee's assigned position. Only one of assigned_position or assigned_position_id should be provided upon creation or update.

assigned_position_id
string <uuid> (AssignedPositionIdCRUD) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

external_id of the Job the Employee is assigned to. Only one of assigned_position or assigned_position_id should be provided upon creation or update. The assigned_position is automatically filled in with the job_name of the Job. Upon update or delete of the Job, the assigned_position is also updated accordingly.

active
boolean or null (EmployeeActive)
Default: true

The Employee will not be used in matching if active is false. This is useful when an Employee is being phased out.

organisational_unit
string or null [ 1 .. 255 ] characters [a-zA-Z0-9_-]+

The external ID of the Organisational Unit the Employee is assigned to.

Array of objects or null (WorkExperience)

The working history of an Employee. It is recommended to add these through the Skill Event endpoints as to not overwrite any existing Working History events.

Array of objects or null (Education)

The education history of an Employee. It is recommended to add these through the Skill Event endpoints as to not overwrite any existing Education History events.

Array of objects or null (Language)

List of ISO 639-1 codes for languages spoken by the Employee, combined with the proficiency level. The proficiency levels go from 1 (elementary proficiency) to 5 (native proficiency). If the level is omitted, the default proficiency level of 2 is used.

Array of objects or null (Function)

List of desired functions of the Employee. Elements consist of a title and an importance. The title can be either a single-line string or free text. The desired function is only processed and stored when the desired function is recognized by TechWolf AI.

non_desired_functions
array or null
Deprecated

List of non-desired functions of the Employee. Elements consist of a title and an importance. The title can be either a single-line string or free text. The non-desired function is only processed and stored when the non-desired function is recognized by TechWolf AI.

Location (object) or LocationAddress (object)

Either a Location object, containing a latitude and longitude, or either a LocationAddress object, containing a country, city and postal code (A state and street address are optional).

Array of objects or null (EmployeeResume)

List of base64 encoded documents (e.g. CVs) related to the Employee in PDF (.pdf), Word (.doc or .docx) or plain-text (.txt) format. It is recommended to add these through the Skill Event endpoints as to not overwrite any existing Resume Document events.

Responses
204No Content
400Bad Request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
409Conflict
413Payload Too Large
415Unsupported Media Type
422Unprocessable entity
503Service Unavailable
post/employees
Request samples
application/json
{
  • "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "assigned_position": "Python Developer",
  • "assigned_position_id": "b3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "active": true,
  • "organisational_unit": "e4d3a59c-2f37-4a3f-9318-9d75e0e7a8f1",
  • "working_history": [
    ],
  • "education_history": [
    ],
  • "languages": [
    ],
  • "desired_functions": [
    ],
  • "non_desired_functions": [ ],
  • "location": {
    },
  • "employee_documents": [
    ]
}
Response samples
application/json
[
  • {
    }
]

Get Employee

Get the Employee information stored inside the system. As resumes are not stored inside our system, they are not returned in this call.

Request
Security:
application (read)
path Parameters
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
include
Array of strings

Additional entity attributes that will be included in the response body. This query parameter can be added multiple times to include more attributes.

Items Value: "custom_properties"
Example: include=custom_properties
Responses
200OK
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
get/employees/{external_id}
Response samples
application/json
{
  • "last_updated": "2021-01-21T17:32:28.000Z",
  • "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "assigned_position": "Python Developer",
  • "assigned_position_id": "b3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "active": true,
  • "low_data_availability": false,
  • "organisational_unit": "e4d3a59c-2f37-4a3f-9318-9d75e0e7a8f1",
  • "working_history": [
    ],
  • "education_history": [
    ],
  • "languages": [
    ],
  • "desired_functions": [
    ],
  • "non_desired_functions": [ ],
  • "location": {
    }
}

Update Employee

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 ''.

Request
Security:
application (write)
path Parameters
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
language
required
string

The language of the input data, which has an impact on the Skill extraction. auto will automatically detect the language used in the provided data.

Enum: "auto" "nl" "fr" "en" "de"
Example: language=en
strict
boolean
Default: true

If strict is enabled, entity creation will fail when a Skill Profile cannot be constructed. If strict is set to false, failed Skill Profile creation will still result in entity creation, but the Skill Profile will be empty.

Request Body schema: application/json
assigned_position
string or null (AssignedPositionCRUD) [ 1 .. 255 ] characters

Job title of the Employee's assigned position. Only one of assigned_position or assigned_position_id should be provided upon creation or update.

assigned_position_id
string <uuid> (AssignedPositionIdCRUD) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

external_id of the Job the Employee is assigned to. Only one of assigned_position or assigned_position_id should be provided upon creation or update. The assigned_position is automatically filled in with the job_name of the Job. Upon update or delete of the Job, the assigned_position is also updated accordingly.

active
boolean or null
Default: true

The Employee will not be used in matching if active is false. This is useful when an Employee is being phased out.

organisational_unit
string or null [ 1 .. 255 ] characters [a-zA-Z0-9_-]+

The external ID of the Organisational Unit the Employee is assigned to.

Array of objects or null (WorkExperience)

The working history of an Employee. It is recommended to add these through the Skill Event endpoints as to not overwrite any existing Working History events.

Array of objects or null (Education)

The education history of an Employee. It is recommended to add these through the Skill Event endpoints as to not overwrite any existing Education History events.

Array of objects or null (Language)

List of ISO 639-1 codes for languages spoken by the Employee, combined with the proficiency level. The proficiency levels go from 1 (elementary proficiency) to 5 (native proficiency). If the level is omitted, the default proficiency level of 2 is used.

Array of objects or null (Function)

List of desired functions of the Employee. Elements consist of a title and an importance. The title can be either a single-line string or free text. The desired function is only processed and stored when the desired function is recognized by TechWolf AI.

non_desired_functions
array or null
Deprecated

List of non-desired functions of the Employee. Elements consist of a title and an importance. The title can be either a single-line string or free text. The non-desired function is only processed and stored when the non-desired function is recognized by TechWolf AI.

Location (object) or LocationAddress (object)
Array of objects (EmployeeResume)

List of base64 encoded documents (e.g. CVs) related to the Employee in PDF (.pdf), Word (.doc or .docx) or plain-text (.txt) format.

Responses
204No Content
400Bad request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
413Payload Too Large
415Unsupported Media Type
422Unprocessable entity
503Service Unavailable
patch/employees/{external_id}
Request samples
application/json
{
  • "assigned_position": "Python Developer",
  • "assigned_position_id": "b3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "active": true,
  • "organisational_unit": "e4d3a59c-2f37-4a3f-9318-9d75e0e7a8f1",
  • "working_history": [
    ],
  • "education_history": [
    ],
  • "languages": [
    ],
  • "desired_functions": [
    ],
  • "non_desired_functions": [ ],
  • "location": {
    },
  • "employee_documents": [
    ]
}
Response samples
application/json
[
  • {
    }
]

Delete Employee

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.

Request
Security:
application (write)
path Parameters
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
Responses
204No Content
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
delete/employees/{external_id}
Response samples
application/json
[
  • {
    }
]

Skill Profile

Get the Skill Profile for an Employee

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!

Request
Security:
application (read)
path Parameters
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
response_format
string
Default: "list"

Defines the format of the returned Skill Profile.

Enum: Description
list

The response format lists the Skills in the Skill Profile. This is the default format.

trending

The Skill Profile in trending format. The profile consists of a list of Skills with labels, with each label indicating whether the Skill is trending or not.

hierarchy

The response format formats the skills in a hierarchical structure. When a Taxonomy is availabe it contains Domains, Skill Clusters and Skills. If it is a 4-level Taxonomy, there is a Subdomain layer between Domains and Skill Clusters. If no Taxonomy is available, the Skills are grouped under their default Techwolf Domain.

skill_clusters

Groups the Skills in the Skill Profile by Skill Cluster. More info about adding your Skill Clusters can be found in the tutorials. Note that the skill_clusters format only shows Skill Clusters with a sufficient proficiency level.

domains

The Skill Profile in Domain format. The profile consists of a list of Domains with the Skills belonging to them, and a percentage representing the size of the share of the Skill Profile the Domain represents.

Example: response_format=list
vocab_language
string
Default: "en_uk"

The display language used for Skill names. Altering the vocabulary language does not change the Skill Profile; it solely changes the way it is displayed. If not specified, the default language (en_uk) will be used. The en language is an alias for en_uk.

Enum: "en" "en_uk" "en_us" "de" "fr" "nl"
Example: vocab_language=en_uk
include
Array of strings

Additional entity attributes that will be included in the response body. This parameter

Items Enum: "sources" "low_data_availability_flag"
Example: include=sources
external_vendor
string (SupportedExternalVendors)

The external vendor language you want to see the Skills displayed in. This will only work for vendors that are activated on your tenant. When specified, the query parameters include=source and include=low_data_availability will not work, as they are not supported on external vendor Skill Profiles.

Value: "workday"
Example: external_vendor=workday
Responses
200OK
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
get/employees/{external_id}/skill_profile
Response samples
application/json
{
  • "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "num_skill_events": 5,
  • "low_data_availability": false,
  • "skills": [
    ]
}

Partially update an Employee Skill Profile with feedback

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.

Request
Security:
application (write)
path Parameters
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
feedback_format
string
Default: "skills"

The format in which feedback for the Skill Profile is given.

Enum: "skills" "skill_clusters" "external_vendor_skills"
Example: feedback_format=Skills
Request Body schema: application/json
One of:
source
string

The source of the Skill Profile update.

Array of objects (SkillWithRequiredHasSkillArray)

The Skills contained in this profile. Either skill or skill_id must be provided, but not both.

Responses
204No Content
400Bad request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
415Unsupported Media Type
503Service Unavailable
patch/employees/{external_id}/skill_profile
Request samples
application/json
{
  • "source": "oracle",
  • "skills": [
    ]
}
Response samples
application/json
[
  • {
    }
]

Metrics

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 .

Get Employee count

Get the total number of Employee objects stored inside the system.

Request
Security:
application (read)
Responses
200OK
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
get/employees/metrics/count
Response samples
application/json
{
  • "entity_type": "Employee",
  • "entity_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "metric_name": "count",
  • "metric_value": 1000,
  • "last_update": "2020-09-01T11:45:49Z"
}

Get Employee adoption metrics

Get adoption metrics across a collection of Employee objects stored in the system, aggregated over their Skills and your Taxonomy.

Request
Security:
application (read)
Request Body schema: application/json
required
Array of objects (EmployeeAdoptionMetricsQuery)
Responses
200OK
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
post/employees/metrics/adoption_metrics
Request samples
application/json
{
  • "queries": [
    ]
}
Response samples
application/json
{
  • "results": [
    ]
}

Get the employability metric using filters and weights

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.

Request
Security:
application (read)
path Parameters
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
Request Body schema: application/json
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)
Responses
200OK
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
post/employees/{external_id}/metrics/employability
Request samples
application/json
{
  • "employee_filters": [
    ],
  • "vacancy_filters": [
    ],
  • "weights": [
    ]
}
Response samples
application/json
{
  • "entity_type": "Employee",
  • "entity_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "metric_name": "configurable_employability",
  • "metric_value": 0.8,
  • "last_update": "2020-09-01T11:45:49Z"
}

Search

Search for Employees based on free text

Search for Employees

Request
Security:
application (read)
query Parameters
limit
integer [ 1 .. 100 ]
Default: 10

The maximal number of results returned.

Example: limit=10
offset
integer >= 0
Default: 0

The rank offset for returned matches, return matches starting from rank offset up to rank offset+limit.

score_min_threshold
number <float> [ 0 .. 1 ]
Default: 0.5

The minimum score of the results. Due to approximations for fast result-delivery, there might be records with a score slightly lower than the minimum.

Example: score_min_threshold=0.7
language
string
Default: "auto"

The language of the input text. auto will automatically detect the language used.

Enum: "auto" "nl" "fr" "en" "de"
Example: language=en
Request Body schema: application/json
text
required
string

Input text.

Location (object) or LocationAddress (object)
required
Array of max_geo_distance (object) or custom_property (object) or custom_property_is_in_list (object) or custom_property_contains_element (object) or external_id_is_in_list (object) or exclude_match_feedback (object)
required
Array of geo_distance (object) or custom_property (object) or desired_functions (object) or skills_match (object)
Responses
200OK
400Bad request
401Unauthorized
403Forbidden
405Method Not Allowed
413Payload Too Large
415Unsupported Media Type
422Unprocessable entity
503Service Unavailable
post/employees/search
Request samples
application/json
{
  • "text": "Bakery",
  • "location": {
    },
  • "filters": [
    ],
  • "weights": [
    ]
}
Response samples
application/json
{
  • "results": [
    ]
}

Skill Events

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

List Skill Events of an Employee by event type

Get all Skill Events of a specified event type linked to an Employee.

Request
Security:
application (read)
path Parameters
employee_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique external ID linked to an Employee, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
limit
integer [ 1 .. 200 ]
Default: 100

The maximal number of entities returned, ordered by the last_updated field and external_id.

Example: limit=50
offset
integer >= 0
Default: 0

The applied offset for returned entities, results starting from offset up to offset + limit.

event_type
string

Get only Skill Events of this type. Learn more about the Skill Event Types at How it works. Multiple of these includes can be added to the request to get the Skill Events of multiple types.

Enum: "working_history" "education_history" "resume_document" "learning" "feedback" "goal" "project" "ticket" "certificate" "skill_notes"
Example: event_type=learning
Responses
200OK
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
get/employees/{employee_external_id}/skill_events
Response samples
application/json
{
  • "count": 3,
  • "results": [
    ]
}

Create a new Skill Event for an Employee

Create a new Skill Event for an Employee. This can be used to track the Skill Profile of an Employee over time.

Request
Security:
application (write)
path Parameters
employee_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique ID linked to an Employee, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
language
required
string

The language of the input data, which has an impact on the Skill extraction. auto will automatically detect the language used in the provided data.

Enum: "auto" "nl" "fr" "en" "de"
Example: language=en
Request Body schema: application/json
external_id
required
string <uuid> [ 1 .. 100 ] characters [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.

Enum: "working_history" "education_history" "resume_document" "learning" "feedback" "goal" "project" "ticket" "certificate" "skill_notes"
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 (object) or working_history_job (object) or education_history (object) or resume_document (object) or learning (object) or learning_course (object) or feedback (object) or goal (object) or project (object) or ticket (object) or certificate (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 event_type. Expanding this field shows you the supported Skill Event content bodies.

Responses
204No Content
400Bad request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
409Conflict
415Unsupported Media Type
503Service Unavailable
post/employees/{employee_external_id}/skill_events
Request samples
application/json
{
  • "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "event_type": "working_history",
  • "timestamp": "2019-08-24",
  • "source": "employee-archives",
  • "content": {
    }
}
Response samples
application/json
[
  • {
    }
]

Get a Skill Event

Get a single Skill Event for an Employee.

Request
Security:
application (read)
path Parameters
employee_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique ID linked to an Employee, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
skill_event_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique ID linked to a Skill Event, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
Responses
200OK
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
get/employees/{employee_external_id}/skill_events/{skill_event_external_id}
Response samples
application/json
{
  • "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "event_type": "working_history",
  • "timestamp": "2019-08-24",
  • "source": "employee-archives",
  • "content": {
    }
}

Update Skill Event

Update a Skill Event for an Employee.

Request
Security:
application (write)
path Parameters
employee_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique ID linked to an Employee, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
skill_event_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique ID linked to a Skill Event, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
language
required
string

The language of the input data, which has an impact on the Skill extraction. auto will automatically detect the language used in the provided data.

Enum: "auto" "nl" "fr" "en" "de"
Example: language=en
Request Body schema: application/json
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.

working_history (object) or working_history_job (object) or education_history (object) or resume_document (object) or learning (object) or learning_course (object) or feedback (object) or goal (object) or project (object) or ticket (object) or certificate (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 event_type. Expanding this field shows you the supported Skill Event content bodies.

Responses
204No Content
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
patch/employees/{employee_external_id}/skill_events/{skill_event_external_id}
Request samples
application/json
{
  • "timestamp": "2019-08-24",
  • "source": "employee-archives",
  • "content": {
    }
}
Response samples
application/json
[
  • {
    }
]

Delete Skill Event

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.

Request
Security:
application (write)
path Parameters
employee_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique ID linked to an Employee, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
skill_event_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique ID linked to a Skill Event, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
Responses
204No Content
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
delete/employees/{employee_external_id}/skill_events/{skill_event_external_id}
Response samples
application/json
[
  • {
    }
]

Interactions

Interactions can be used to handle Employees interacting with Vacancies or titles in ways that express their desired functions.

List Interactions of an Employee

Get all Interactions linked to an Employee.

Request
Security:
application (read)
path Parameters
employee_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique ID linked to an Employee, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
Responses
200OK
400Bad request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
415Unsupported Media Type
503Service Unavailable
get/employees/{employee_external_id}/interactions
Response samples
application/json
{
  • "count": 2,
  • "results": [
    ]
}

Create a new Interaction for an Employee

Create a new Interaction for an Employee.

Request
Security:
application (write)
path Parameters
employee_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique ID linked to an Employee, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
language
required
string

The language of the input data, which has an impact on the Skill extraction. auto will automatically detect the language used in the provided data.

Enum: "auto" "nl" "fr" "en" "de"
Example: language=en
Request Body schema: application/json
external_id
required
string <uuid> non-empty [a-zA-Z0-9_-]+

The unique Employee Interaction ID in your system, consisting of alphanumeric characters, hyphens and underscores.

interaction_type
required
string

Type of the Employee Interaction.

string or string

The completion date (in IS08601 format) of the Employee Interaction. This is the point in time at which the Employee interacted with a Vacancy or title. If not given, it will be automatically set to the creation time of the Employee Interaction.

vacancy_id
string <uuid>

The ID of the Vacancy with which the Employee has interacted. Either a vacancy_id or a title should be provided, and not both.

title
string

The title with which the Employee has interacted. Either a vacancy_id or a title should be provided, but not both. A title can be any kind of free text, and does not need to be associated with an existing Vacancy.

Responses
204No Content
400Bad request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
415Unsupported Media Type
503Service Unavailable
post/employees/{employee_external_id}/interactions
Request samples
application/json
{
  • "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "interaction_type": "vacancy_liked",
  • "timestamp": "2023-06-08T14:42:31.130855",
  • "vacancy_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7"
}
Response samples
application/json
[
  • {
    }
]

Get Employee Interaction

Get an Employee Interaction from an Employee.

Request
Security:
application (read)
path Parameters
employee_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique ID linked to an Employee, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
interaction_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique ID linked to an Employee Interaction, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
Responses
200OK
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
get/employees/{employee_external_id}/interactions/{interaction_external_id}
Response samples
application/json
{
  • "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "interaction_type": "vacancy_liked",
  • "timestamp": "2023-06-08T14:42:31.130855",
  • "vacancy_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7"
}

Delete Employee Interaction

Remove an Employee Interaction from an Employee.

Request
Security:
application (write)
path Parameters
employee_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique ID linked to an Employee, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
interaction_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique ID linked to an Employee Interaction, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
Responses
204No Content
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
delete/employees/{employee_external_id}/interactions/{interaction_external_id}
Response samples
application/json
[
  • {
    }
]

Suggestions

Get the suggestions Skill Profile for selected Employees

Beta

This endpoint retrieves Skill suggestions for selected Employees. Users can customize the response with optional query parameters like language, the number of suggestions, and the format (Skill Profiles or Skill Clusters). It supports filtering by Skill types (suggested, validated, rejected) and choosing whether to include only Employees found in SEAPI. The response includes detailed Skill suggestions, with translated names and sources, and optional clustering if selected.

Request
Security:
application (read)
query Parameters
language
Array of strings (schema)
Default: ["en_uk"]

The display languages for which Skill names are provided. If not specified, the default language (en_uk) will be used. The en language is an alias for en_uk.

Items Enum: "en" "en_uk" "en_us" "de" "fr" "nl"
suggestion_count
integer >= 1

The maximum number of suggested Skills to be returned and displayed within each Employee's Skill Profile.

max_skills_per_cluster
integer >= 1

The maximum number of Skills to return for each Skill Cluster.
This only applies when response_format is set to skill_clusters.

strict
boolean
Default: false

if set to true, the response will only contain the the employees that are found in the SEAPI. if set to false, the response will also contain the employees that are not found in the SEAPI, these employees are mapped to an empty array.

include
Array of strings
Default: ["suggested_skills"]

The type of suggestions to include in the response.
suggested_skills - Include the suggested Skills in the response.
validated_skills - Include the validated Skills in the response.
rejected_skills - Include the rejected Skills in the response.

Items Enum: "suggested_skills" "validated_skills" "rejected_skills"
Example: include=suggested_skills
Request Body schema: application/json
employee_ids
required
Array of strings <uuid> (UUID)

The IDs of the Employees for which to get the suggestions.

response_format
string
Default: "skill_profiles"

The format in which the suggestions should be returned.
skill_profiles - Return the suggestions as a list of the Employee Skill Profiles.
skill_clusters - Return the suggestions as a list of the Employee Skill Clusters.

Enum: "skill_profiles" "skill_clusters"
Responses
200OK
400Bad request
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
post/employees/suggestions/skills
Request samples
application/json
{
  • "employee_ids": [
    ],
  • "response_format": "skill_profiles"
}
Response samples
application/json
{
  • "suggestions": [
    ],
  • "validated": [
    ],
  • "rejected": [
    ]
}

CRUD

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.

Custom Properties are supported for this entity.

List Job Families

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.

Request
Security:
application (read)
query Parameters
limit
integer [ 1 .. 200 ]
Default: 100

The maximal number of entities returned, ordered by the last_updated field and external_id.

Example: limit=50
offset
integer >= 0
Default: 0

The applied offset for returned entities, results starting from offset up to offset + limit.

is_active
boolean
Default: "None"

This parameter can be used to only include entities with the active attribute set to true or false. If the parameter is not set, all entities will be included.

Example: is_active=true
include
Array of strings

Additional entity attributes that will be included in the response body. This query parameter can be added multiple times to include more attributes.

Items Value: "custom_properties"
Example: include=custom_properties
Responses
200OK
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
get/job_architecture/job_families
Response samples
application/json
{
  • "count": 3,
  • "results": [
    ]
}

Create Job Family

Submit new Job Family information to initialise their Job Family inside the Skill Engine API.

Request
Security:
application (write)
Request Body schema: application/json
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

job_family_name
required
string [ 1 .. 255 ] characters

Name of the Job Family.

job_family_group
string [ 1 .. 255 ] characters

Name of the Job Family Group.

active
boolean or null (JobFamilyActive)
Default: true

The Job Family will not be used in matching if active is false. This is useful when a Job Family is being phased out.

Responses
204No Content
400Bad Request
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
post/job_architecture/job_families
Request samples
application/json
{
  • "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "job_family_name": "Software Engineer",
  • "job_family_group": "IT & Engineering",
  • "active": true
}
Response samples
application/json
[
  • {
    }
]

Get Job Family

Get the Job Family information stored inside the system.

Request
Security:
application (read)
path Parameters
job_family_external_id
required
any

The unique Job Family ID in your system, consisting of alphanumeric characters, hyphens and underscores.

query Parameters
include
Array of strings

Additional entity attributes that will be included in the response body. This query parameter can be added multiple times to include more attributes.

Items Value: "custom_properties"
Example: include=custom_properties
Responses
200OK
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
get/job_architecture/job_families/{job_family_external_id}
Response samples
application/json
{
  • "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",
  • "active": true
}

Update Job Family

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.

Request
Security:
application (write)
path Parameters
job_family_external_id
required
any

The unique Job Family ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Request Body schema: application/json
job_family_name
string [ 1 .. 255 ] characters

Name of the Job Family.

job_family_group
string [ 1 .. 255 ] characters

Name of the Job Family Group.

active
boolean or null (JobFamilyActive)
Default: true

The Job Family will not be used in matching if active is false. This is useful when a Job Family is being phased out.

Responses
204No Content
400Bad request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
patch/job_architecture/job_families/{job_family_external_id}
Request samples
application/json
{
  • "job_family_name": "Software Engineer",
  • "job_family_group": "IT & Engineering",
  • "active": true
}
Response samples
application/json
[
  • {
    }
]

Delete Job Family

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.

Request
Security:
application (write)
path Parameters
job_family_external_id
required
any

The unique Job Family ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Responses
204No Content
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
delete/job_architecture/job_families/{job_family_external_id}
Response samples
application/json
[
  • {
    }
]

Skill Profile

Get the Skill Profile for a Job Family

Get an export of the Job Family Skill Profile to leverage it for user interaction.

Request
Security:
application (read)
path Parameters
job_family_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
domain_namespace
string
Default: "techwolf"

The Domain namespace determines the Domains the Skills will be mapped to. Using techwolf will map them to the default TechWolf domains. Using taxonomy will map them to the custom Domains defined in your Taxonomy. Using adaptive will map the Skills to the Domains in the custom Taxonomy if there is one present, otherwise it will fall back to the default Techwolf Domains.

Enum: "techwolf" "taxonomy" "adaptive"
Example: domain_namespace=taxonomy
vocab_language
string
Default: "en_uk"

The display language used for Skill names. Altering the vocabulary language does not change the Skill Profile; it solely changes the way it is displayed. If not specified, the default language (en_uk) will be used. The en language is an alias for en_uk.

Enum: "en" "en_uk" "en_us" "de" "fr" "nl"
Example: vocab_language=en_uk
external_vendor
string (SupportedExternalVendors)

The external vendor language you want to see the Skills displayed in. This will only work for vendors that are activated on your tenant. When specified, the query parameter include=skill_validation_state will not work, as it is not supported on external vendor Skill Profiles.

Value: "workday"
Example: external_vendor=workday
response_format
string
Default: "list"

Defines the format of the returned Skill Profile.

Enum: Description
list

The response format lists the Skills in the Skill Profile. This is the default format.

hierarchy

The response format formats the skills in a hierarchical structure. When a Taxonomy is availabe it contains Domains, Skill Clusters and Skills. If it is a 4-level Taxonomy, there is a Subdomain layer between Domains and Skill Clusters. If no Taxonomy is available, the Skills are grouped under their default Techwolf Domain.

Example: response_format=list
include
Array of strings

Additional attributes that will be included in the response body. This query parameter can be added multiple times to include more attributes. The proficiency_level and critical options are only possible when response_format=list or when no response_format is given.

Items Enum: "skill_validation_state" "proficiency_level" "critical"
Example: include=skill_validation_state&include=critical
Responses
200OK
400Bad request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
422Unprocessable entity
503Service Unavailable
get/job_architecture/job_families/{job_family_external_id}/skill_profile
Response samples
application/json
{
  • "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "skills": [
    ]
}

Partially update a Job Family Skill Profile with feedback

Provide feedback about an existing Job Family 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.

Request
Security:
application (write)
query Parameters
feedback_format
string
Default: "skills"

The format in which feedback for the Skill Profile is given.

Enum: "skills" "external_vendor_skills"
Example: feedback_format=skills
Request Body schema: application/json
One of:
source
string

The source of the Skill Profile update.

Array of objects (SkillWithRequiredHasSkillPropertyArray)

The Skills contained in this profile. Either skill or skill_id must be provided, but not both.

Responses
204No Content
400Bad request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
415Unsupported Media Type
503Service Unavailable
patch/job_architecture/job_families/{job_family_external_id}/skill_profile
Request samples
application/json
{
  • "source": "oracle",
  • "skills": [
    ]
}
Response samples
application/json
[
  • {
    }
]

Get the suggested Skill Profile for a Job Family

Get an export of the Job Family Skill Profile to leverage it for user interaction. The suggested Job Family Skill Profile automatically updates with changes to the Job Family Profile Data or Job Profile Data for any of its underlying Jobs.

Request
Security:
application (read)
path Parameters
job_family_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
domain_namespace
string
Default: "techwolf"

The Domain namespace determines the Domains the Skills will be mapped to. Using techwolf will map them to the default TechWolf domains. Using taxonomy will map them to the custom Domains defined in your Taxonomy. Using adaptive will map the Skills to the Domains in the custom Taxonomy if there is one present, otherwise it will fall back to the default Techwolf Domains.

Enum: "techwolf" "taxonomy" "adaptive"
Example: domain_namespace=taxonomy
vocab_language
string
Default: "en_uk"

The display language used for Skill names. Altering the vocabulary language does not change the Skill Profile; it solely changes the way it is displayed. If not specified, the default language (en_uk) will be used. The en language is an alias for en_uk.

Enum: "en" "en_uk" "en_us" "de" "fr" "nl"
Example: vocab_language=en_uk
response_format
string
Default: "list"

Defines the format of the returned Skill Profile.

Enum: Description
list

The response format lists the Skills in the Skill Profile. This is the default format.

hierarchy

The response format formats the skills in a hierarchical structure. When a Taxonomy is availabe it contains Domains, Skill Clusters and Skills. If it is a 4-level Taxonomy, there is a Subdomain layer between Domains and Skill Clusters. If no Taxonomy is available, the Skills are grouped under their default Techwolf Domain.

Example: response_format=list
include
Array of strings

Additional attributes that will be included in the response body. This query parameter can be added multiple times to include more attributes.

Items Value: "skill_validation_state"
Example: include=skill_validation_state
Responses
200OK
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
422Unprocessable entity
503Service Unavailable
get/job_architecture/job_families/{job_family_external_id}/suggested_skill_profile
Response samples
application/json
{
  • "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "skills": [
    ]
}

Job Family Profile Data

Job Family Profile Data influences the Skillset of a Job Family. Profile Data enables an easy method of adding new information to a Job Family.

List Job Family Profile Data

Get a list of all Job Family Profile Data available in the system. This can for example be used to keep track of proper synchronisation between your system and the Skill Engine API.

Request
Security:
application (read)
path Parameters
job_family_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique Job Family ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
limit
integer [ 1 .. 200 ]
Default: 100

The maximal number of entities returned, ordered by the last_updated field and external_id.

Example: limit=50
offset
integer >= 0
Default: 0

The applied offset for returned entities, results starting from offset up to offset + limit.

Responses
200OK
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
get/job_architecture/job_families/{job_family_external_id}/profile_data
Response samples
application/json
{
  • "count": 2,
  • "results": [
    ]
}

Create Job Family Profile Data for a Job Family

Submit new Job Family Profile Data information to initialise the Job Family inside the Skill Engine API.

Request
Security:
application (write)
path Parameters
job_family_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique Job Family ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
language
required
string

The language of the input data, which has an impact on the Skill extraction. auto will automatically detect the language used in the provided data.

Enum: "auto" "nl" "fr" "en" "de"
Example: language=en
Request Body schema: application/json
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

data_type
required
string

Type of the Job Family Profile Data.

Value: "job_family_description"
source
required
string [ 1 .. 255 ] characters

The source of the Job Family Profile Data.

required
job_family_description_content (object) or job_family_description_file_content (object)

The content of the Job Family Profile Data. The content should align with the data_type.

Responses
204No Content
400Bad Request
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
post/job_architecture/job_families/{job_family_external_id}/profile_data
Request samples
application/json
{
  • "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "data_type": "job_family_description",
  • "source": "Workday",
  • "data": {
    }
}
Response samples
application/json
[
  • {
    }
]

Get Job Family Profile Data

Get a single Job Family Profile Data item for a Job Family.

Request
Security:
application (read)
path Parameters
job_family_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique ID linked to a Job Family, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
job_family_profile_data_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique ID linked to a Job Family Profile Data, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
Responses
200OK
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
get/job_architecture/job_families/{job_family_external_id}/profile_data/{job_family_profile_data_external_id}
Response samples
application/json
{
  • "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "data_type": "job_family_description",
  • "timestamp": "2018-09-052T13:22:39.179747",
  • "source": "Workday",
  • "data": {
    }
}

Update Job Family Profile Data

Update Profile Data for a Job Family.

Request
Security:
application (write)
path Parameters
job_family_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique ID linked to a Job Family, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
job_family_profile_data_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique ID linked to Job Family Profile Data, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
language
required
string

The language of the input data, which has an impact on the Skill extraction. auto will automatically detect the language used in the provided data.

Enum: "auto" "nl" "fr" "en" "de"
Example: language=en
Request Body schema: application/json
source
string [ 1 .. 255 ] characters

The source of the Job Family Profile Data.

job_family_description_content (object) or job_family_description_file_content (object)

The content of the Job Family Profile Data. The content should align with the original data_type assigned to this Profile Data.

Responses
204No Content
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
patch/job_architecture/job_families/{job_family_external_id}/profile_data/{job_family_profile_data_external_id}
Request samples
application/json
{
  • "source": "Workday",
  • "data": {
    }
}
Response samples
application/json
[
  • {
    }
]

Delete Job Family Profile Data for a Job Family

Remove Job Family Profile Data from the system. This step deletes all information linked exclusively to this Job Family Profile Data. It is not possible to delete Skill Profile Feedback via this endpoint, use the Job Family Profile Data Patch endpoint instead.

Request
Security:
application (write)
path Parameters
job_family_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique ID linked to a Job Family, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
job_family_profile_data_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique ID linked to a Job Family Profile Data instance, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
Responses
204No Content
400Bad Request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
delete/job_architecture/job_families/{job_family_external_id}/profile_data/{job_family_profile_data_external_id}
Response samples
application/json
{
  • "code": "Bad Request",
  • "message": "You cannot delete a Skill Profile Feedback instance via this endpoint."
}

CRUD

Jobs in the Skill Engine API represent a specific role within your organisation. They are linked to Job Families.

More info about Jobs can be found at the Job Architecture Tutorial.

Custom Properties are supported for this entity.

List Jobs

Get a list of all Jobs available in the system. This can for example be used to keep track of proper synchronisation between your system and the Skill Engine API.

Request
Security:
application (read)
query Parameters
limit
integer [ 1 .. 200 ]
Default: 100

The maximal number of entities returned, ordered by the last_updated field and external_id.

Example: limit=50
offset
integer >= 0
Default: 0

The applied offset for returned entities, results starting from offset up to offset + limit.

is_active
boolean
Default: "None"

This parameter can be used to only include entities with the active attribute set to true or false. If the parameter is not set, all entities will be included.

Example: is_active=true
include
Array of strings

Additional entity attributes that will be included in the response body. This query parameter can be added multiple times to include more attributes.

Items Value: "custom_properties"
Example: include=custom_properties
Responses
200OK
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
get/job_architecture/jobs
Response samples
application/json
{
  • "count": 3,
  • "results": [
    ]
}

Create Job

Submit new Job information to initialise this inside the Skill Engine API. If a Job has a Job Family, the Job Skill Profile will be generated automatically, incorporating all Skills validated for the specified Job Family.

Request
Security:
application (write)
query Parameters
language
required
string

The language of the input data, which has an impact on the Skill extraction. auto will automatically detect the language used in the provided data.

Enum: "auto" "nl" "fr" "en" "de"
Example: language=en
Request Body schema: application/json
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

job_family_id
string [ 1 .. 100 ] characters

ID of the Job Family.

job_name
required
string [ 1 .. 255 ] characters

Name of the Job.

active
boolean or null (JobActive)
Default: true

The Job will not be used in matching if active is false. This is useful when a Job is being phased out.

Responses
204No Content
400Bad Request
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
post/job_architecture/jobs
Request samples
application/json
{
  • "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "job_family_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "job_name": "Front End Developer",
  • "active": true
}
Response samples
application/json
[
  • {
    }
]

Get Job

Get a Job by its external ID. This can for example be used to keep track of proper synchronisation between your system and the Skill Engine API.

Request
Security:
application (read)
path Parameters
job_external_id
required
any

The unique Job ID in your system, consisting of alphanumeric characters, hyphens and underscores.

query Parameters
include
Array of strings

Additional entity attributes that will be included in the response body. This query parameter can be added multiple times to include more attributes.

Items Value: "custom_properties"
Example: include=custom_properties
Responses
200OK
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
get/job_architecture/jobs/{job_external_id}
Response samples
application/json
{
  • "last_updated": "2021-01-21T17:32:28.000Z",
  • "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "job_family_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "job_name": "Front End Developer",
  • "active": true,
  • "low_data_availability": false
}

Update Job

Update a Job by its external ID. If you change the Job Family, it will result in the loss of all Skills validated for the previous Job Family and the addition of all Skills validated for the new Job Family. This can for example be used to keep track of proper synchronisation between your system and the Skill Engine API.

Request
Security:
application (write)
path Parameters
job_external_id
required
any

The unique Job ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Request Body schema: application/json
job_family_id
string [ 1 .. 100 ] characters

ID of the Job Family.

job_name
string [ 1 .. 255 ] characters

Name of the Job.

active
boolean or null (JobActive)
Default: true

The Job will not be used in matching if active is false. This is useful when a Job is being phased out.

Responses
204No Content
400Bad Request
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
patch/job_architecture/jobs/{job_external_id}
Request samples
application/json
{
  • "job_family_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "job_name": "Front End Developer",
  • "active": true
}
Response samples
application/json
[
  • {
    }
]

Delete Job

Delete a Job by its external ID. Delete the Job information stored inside the system. By deleting the Job, all Job Profile Data is also deleted. Recalculates the Job Family Skill Profile if the Job Family is specified for the Job.

Request
Security:
application (write)
path Parameters
job_external_id
required
any

The unique Job ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Responses
204No Content
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
delete/job_architecture/jobs/{job_external_id}
Response samples
application/json
[
  • {
    }
]

Skill Profile

Get the Skill Profile for a Job

Get an export of the Job Skill Profile to leverage it for user interaction.

Request
Security:
application (read)
path Parameters
job_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
domain_namespace
string
Default: "techwolf"

The Domain namespace determines the Domains the Skills will be mapped to. Using techwolf will map them to the default TechWolf domains. Using taxonomy will map them to the custom Domains defined in your Taxonomy. Using adaptive will map the Skills to the Domains in the custom Taxonomy if there is one present, otherwise it will fall back to the default Techwolf Domains.

Enum: "techwolf" "taxonomy" "adaptive"
Example: domain_namespace=taxonomy
vocab_language
string
Default: "en_uk"

The display language used for Skill names. Altering the vocabulary language does not change the Skill Profile; it solely changes the way it is displayed. If not specified, the default language (en_uk) will be used. The en language is an alias for en_uk.

Enum: "en" "en_uk" "en_us" "de" "fr" "nl"
Example: vocab_language=en_uk
external_vendor
string (SupportedExternalVendors)

The external vendor language you want to see the Skills displayed in. This will only work for vendors that are activated on your tenant. When specified, the query parameters include=low_data_availability and include=skill_validation_state will not work, as they are not supported on external vendor Skill Profiles.

Value: "workday"
Example: external_vendor=workday
response_format
string
Default: "list"

Defines the format of the returned Skill Profile.

Enum: Description
list

The response format lists the Skills in the Skill Profile. This is the default format.

hierarchy

The response format formats the skills in a hierarchical structure. When a Taxonomy is availabe it contains Domains, Skill Clusters and Skills. If it is a 4-level Taxonomy, there is a Subdomain layer between Domains and Skill Clusters. If no Taxonomy is available, the Skills are grouped under their default Techwolf Domain.

Example: response_format=list
include
Array of strings

Additional attributes that will be included in the response body. This query parameter can be added multiple times to include more attributes. The proficiency_level and critical options are only possible when response_format=list or when no response_format is given.

Items Enum: "low_data_availability_flag" "skill_validation_state" "proficiency_level" "critical"
Example: include=skill_validation_state&include=critical
Responses
200OK
400Bad request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
422Unprocessable entity
503Service Unavailable
get/job_architecture/jobs/{job_external_id}/skill_profile
Response samples
application/json
{
  • "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "low_data_availability": false,
  • "skills": [
    ]
}

Partially update a Job Skill Profile with feedback

Provide feedback about an existing Job Skill Profile to update it inside the system. When the feedback_format query parameter is skills, the body of the feedback message will overwrite, add or update Skills in the original profile. This endpoint allows you to validate skills and add/remove properties such as proficiency levels and criticality.

Request
Security:
application (write)
query Parameters
feedback_format
string
Default: "skills"

The format in which feedback for the Skill Profile is given.

Enum: "skills" "external_vendor_skills"
Example: feedback_format=skills
Request Body schema: application/json
One of:
source
string

The source of the Skill Profile update.

Array of objects (SkillWithRequiredHasSkillPropertyArray)

The Skills contained in this profile. Either skill or skill_id must be provided, but not both.

Responses
204No Content
400Bad request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
415Unsupported Media Type
503Service Unavailable
patch/job_architecture/jobs/{job_external_id}/skill_profile
Request samples
application/json
{
  • "source": "oracle",
  • "skills": [
    ]
}
Response samples
application/json
[
  • {
    }
]

Get the suggested Skill Profile for a Job

Get an export of the Job Skill Profile to leverage it for user interaction. The suggested Job Skill Profile automatically updates with changes to the Job Profile Data.

Request
Security:
application (read)
path Parameters
job_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
domain_namespace
string
Default: "techwolf"

The Domain namespace determines the Domains the Skills will be mapped to. Using techwolf will map them to the default TechWolf domains. Using taxonomy will map them to the custom Domains defined in your Taxonomy. Using adaptive will map the Skills to the Domains in the custom Taxonomy if there is one present, otherwise it will fall back to the default Techwolf Domains.

Enum: "techwolf" "taxonomy" "adaptive"
Example: domain_namespace=taxonomy
vocab_language
string
Default: "en_uk"

The display language used for Skill names. Altering the vocabulary language does not change the Skill Profile; it solely changes the way it is displayed. If not specified, the default language (en_uk) will be used. The en language is an alias for en_uk.

Enum: "en" "en_uk" "en_us" "de" "fr" "nl"
Example: vocab_language=en_uk
response_format
string
Default: "list"

Defines the format of the returned Skill Profile.

Enum: Description
list

The response format lists the Skills in the Skill Profile. This is the default format.

hierarchy

The response format formats the skills in a hierarchical structure. When a Taxonomy is availabe it contains Domains, Skill Clusters and Skills. If it is a 4-level Taxonomy, there is a Subdomain layer between Domains and Skill Clusters. If no Taxonomy is available, the Skills are grouped under their default Techwolf Domain.

Example: response_format=list
include
Array of strings

Additional attributes that will be included in the response body. This query parameter can be added multiple times to include more attributes.

Items Value: "skill_validation_state"
Example: include=skill_validation_state
Responses
200OK
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
422Unprocessable entity
503Service Unavailable
get/job_architecture/jobs/{job_external_id}/suggested_skill_profile
Response samples
application/json
{
  • "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "skills": [
    ]
}

Get the market Skill Profile for a JobDeprecated

Get an export of the Job Skill Profile based on the market to leverage it for user interaction.

Request
Security:
application (read)
path Parameters
job_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
domain_namespace
string
Default: "techwolf"

The Domain namespace determines the Domains the Skills will be mapped to. Using techwolf will map them to the default TechWolf domains. Using taxonomy will map them to the custom Domains defined in your Taxonomy. Using adaptive will map the Skills to the Domains in the custom Taxonomy if there is one present, otherwise it will fall back to the default Techwolf Domains.

Enum: "techwolf" "taxonomy" "adaptive"
Example: domain_namespace=taxonomy
Responses
200OK
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
422Unprocessable entity
503Service Unavailable
get/job_architecture/jobs/{job_external_id}/market_skill_profile
Response samples
application/json
{
  • "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "skills": [
    ]
}

Get the external market Skill Profiles of a Job.

Get a list of external market Skill Profiles for a Job, based on the peer groups defined in the tenant. For every peer group, the Skill Profile is a combination of Profiles found in external market data from the companies in that peer group.

Request
Security:
application (read)
path Parameters
job_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
response_format
string
Default: "list"

Defines the format of the returned Skill Profile.

Enum: Description
list

The response format lists the Skills in the Skill Profile. This is the default format.

hierarchy

The response format formats the skills in a hierarchical structure. When a Taxonomy is availabe it contains Domains, Skill Clusters and Skills. If it is a 4-level Taxonomy, there is a Subdomain layer between Domains and Skill Clusters. If no Taxonomy is available, the Skills are grouped under their default Techwolf Domain.

Example: response_format=list
Responses
200OK
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
422Unprocessable entity
503Service Unavailable
get/job_architecture/jobs/{job_external_id}/market_skill_profiles
Response samples
application/json
[
  • {
    }
]

Job Profile Data

Job Profile Data influences the skillset of a Job. Profile Data enables an easy method of adding new information to a Job.

List Job Profile Data

Get a list of all Job Profile Data available in the system. This can for example be used to keep track of proper synchronisation between your system and the Skill Engine API.

Request
Security:
application (read)
path Parameters
job_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique Job ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
limit
integer [ 1 .. 200 ]
Default: 100

The maximal number of entities returned, ordered by the last_updated field and external_id.

Example: limit=50
offset
integer >= 0
Default: 0

The applied offset for returned entities, results starting from offset up to offset + limit.

Responses
200OK
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
get/job_architecture/jobs/{job_external_id}/profile_data
Response samples
application/json
{
  • "count": 2,
  • "results": [
    ]
}

Create Job Profile Data for a Job

Submit new Job Profile Data information to initialise the Job inside the Skill Engine API.

Request
Security:
application (write)
path Parameters
job_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique Job ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
language
required
string

The language of the input data, which has an impact on the Skill extraction. auto will automatically detect the language used in the provided data.

Enum: "auto" "nl" "fr" "en" "de"
Example: language=en
Request Body schema: application/json
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

data_type
required
string

Type of the Job Profile Data.

Enum: "job_description" "job_title" "vacancy" "skill_notes"
source
required
string [ 1 .. 255 ] characters

The source of the Job Profile Data.

required
job_description_content (object) or job_description_file_content (object) or job_title_content (object) or vacancy_content (object) or skill_notes (object)

The content of the Job Profile Data. The content should align with the data_type.

Responses
204No Content
400Bad Request
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
post/job_architecture/jobs/{job_external_id}/profile_data
Request samples
application/json
{
  • "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "data_type": "job_description",
  • "source": "Workday",
  • "data": {
    }
}
Response samples
application/json
[
  • {
    }
]

Get Job Profile Data

Get a single Job Profile Data item for a Job.

Request
Security:
application (read)
path Parameters
job_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique ID linked to a Job, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
job_profile_data_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique ID linked to a Job Profile Data, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
Responses
200OK
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
get/job_architecture/jobs/{job_external_id}/profile_data/{job_profile_data_external_id}
Response samples
application/json
{
  • "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "data_type": "job_description",
  • "timestamp": "2018-09-052T13:22:39.179747",
  • "source": "Workday",
  • "data": {
    }
}

Update Job Profile Data

Update Profile Data for a Job.

Request
Security:
application (write)
path Parameters
job_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique ID linked to a Job, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
job_profile_data_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique ID linked to Profile Data, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
language
required
string

The language of the input data, which has an impact on the Skill extraction. auto will automatically detect the language used in the provided data.

Enum: "auto" "nl" "fr" "en" "de"
Example: language=en
Request Body schema: application/json
source
string [ 1 .. 255 ] characters

The source of the Job Profile Data.

job_description_content (object) or job_description_file_content (object) or job_title_content (object) or vacancy_content (object) or skill_notes (object)

The content of the Job Profile Data. The content should align with the original data_type assigned to this Profile Data.

Responses
204No Content
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
patch/job_architecture/jobs/{job_external_id}/profile_data/{job_profile_data_external_id}
Request samples
application/json
{
  • "source": "Workday",
  • "data": {
    }
}
Response samples
application/json
[
  • {
    }
]

Delete Job Profile Data for a Job

Remove Job Profile Data from the system. This step deletes all information linked exclusively to this Job Profile Data. It is not possible to delete Skill Profile Feedback via this endpoint, use the Job Profile Data Patch endpoint instead.

Request
Security:
application (write)
path Parameters
job_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique ID linked to a Job, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
job_profile_data_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique ID linked to a Job Profile Data instance, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
Responses
204No Content
400Bad Request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
delete/job_architecture/jobs/{job_external_id}/profile_data/{job_profile_data_external_id}
Response samples
application/json
{
  • "code": "Bad Request",
  • "message": "You cannot delete a Skill Profile Feedback instance via this endpoint."
}

Metrics

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 .

Get Job adoption metrics

Get adoption metrics across a collection of Job objects stored in the system, aggregated over their Skills and your Taxonomy.

Request
Security:
application (read)
Request Body schema: application/json
required
Array of objects (JobAdoptionMetricsQuery)
Responses
200OK
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
post/job_architecture/jobs/metrics/adoption_metrics
Request samples
application/json
{
  • "queries": [
    ]
}
Response samples
application/json
{
  • "results": [
    ]
}

CRUD

Vacancies in the Skill Engine API correspond to Job postings or open positions.

More info about entities can be found on the How it Works page.

Custom Properties are supported for this entity.

List Vacancies

Get a list of all Vacancies available in the system. This can for example be used to keep track of proper synchronisation between your system and the Skill Engine API.

Request
Security:
application (read)
query Parameters
limit
integer [ 1 .. 200 ]
Default: 100

The maximal number of entities returned, ordered by the last_updated field and external_id.

Example: limit=50
offset
integer >= 0
Default: 0

The applied offset for returned entities, results starting from offset up to offset + limit.

is_active
boolean
Default: "None"

This parameter can be used to only include entities with the active attribute set to true or false. If the parameter is not set, all entities will be included.

Example: is_active=true
include
Array of strings

Additional entity attributes that will be included in the response body. This query parameter can be added multiple times to include more attributes.

Items Value: "custom_properties"
Example: include=custom_properties
Responses
200OK
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
get/vacancies
Response samples
application/json
{
  • "count": 3,
  • "results": [
    ]
}

Create Vacancy

Submit new Vacancy information to initialise their Skill Profile inside the Skill Engine API.

Request
Security:
application (write)
query Parameters
language
required
string

The language of the input data, which has an impact on the Skill extraction. auto will automatically detect the language used in the provided data.

Enum: "auto" "nl" "fr" "en" "de"
Example: language=en
strict
boolean
Default: true

If strict is enabled, entity creation will fail when a Skill Profile cannot be constructed. If strict is set to false, failed Skill Profile creation will still result in entity creation, but the Skill Profile will be empty.

Request Body schema: application/json
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

job_title
required
string [ 1 .. 255 ] characters

Title of the Vacancy.

job_description
required
string non-empty

Textual description of the Vacancy (job posting).

active
boolean or null
Default: true

The Vacancy will not be used in matching if active is false. This is useful when a Vacancy is being phased out.

Array of objects or null (Language)

List of ISO 639-1 codes for languages required by the Vacancy, combined with the proficiency level. The proficiency levels go from 1 (elementary proficiency) to 5 (native proficiency). If the level is omitted, the default proficiency level of 2 is used.

company
string or null <uuid> non-empty [a-zA-Z0-9_-]+

external_id from the External Company the Vacancy is linked to.

Location (object) or LocationAddress (object)
Responses
204No Content
400Bad Request
401Unauthorized
403Forbidden
405Method Not Allowed
409Conflict
413Payload Too Large
415Unsupported Media Type
422Unprocessable entity
503Service Unavailable
post/vacancies
Request samples
application/json
{
  • "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "job_title": "Software engineer",
  • "job_description": "We are looking for a software engineer with great communication Skills in Ghent. Experience in front-end development, git, agile working is a plus.",
  • "active": true,
  • "languages": [
    ],
  • "company": "b3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "location": {
    }
}
Response samples
application/json
[
  • {
    }
]

Get Vacancy

Get the Vacancy information stored inside the system.

Request
Security:
application (read)
path Parameters
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
include
Array of strings

Additional entity attributes that will be included in the response body. This query parameter can be added multiple times to include more attributes.

Items Value: "custom_properties"
Example: include=custom_properties
Responses
200OK
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
get/vacancies/{external_id}
Response samples
application/json
{
  • "last_updated": "2021-01-21T17:32:28.000Z",
  • "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "job_title": "Software engineer",
  • "job_description": "We are looking for a software engineer with great communication Skills in Ghent. Experience in front-end development, git, agile working is a plus.",
  • "active": true,
  • "languages": [
    ],
  • "company": "b3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "location": {
    }
}

Update Vacancy

Submit the most up-to-date Vacancy 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. Passing the null value removes non-required attributes. Object attributes will be removed when passing null, arrays with [] and strings with the empty string ''.

Request
Security:
application (write)
path Parameters
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
language
required
string

The language of the input data, which has an impact on the Skill extraction. auto will automatically detect the language used in the provided data.

Enum: "auto" "nl" "fr" "en" "de"
Example: language=en
strict
boolean
Default: true

If strict is enabled, entity creation will fail when a Skill Profile cannot be constructed. If strict is set to false, failed Skill Profile creation will still result in entity creation, but the Skill Profile will be empty.

Request Body schema: application/json
job_title
string [ 1 .. 255 ] characters

Title of the Vacancy.

job_description
string non-empty

Textual description of the Vacancy (job posting).

active
boolean or null
Default: true

The Vacancy will not be used in matching if active is false. This is useful when a Vacancy is being phased out.

Array of objects or null (Language)

List of ISO 639-1 codes for languages required by the Vacancy, combined with the proficiency level. The proficiency levels go from 1 (elementary proficiency) to 5 (native proficiency). If the level is omitted, the default proficiency level of 2 is used.

company
string or null <uuid> non-empty [a-zA-Z0-9_-]+

external_id from the External Company the Vacancy is linked to.

Location (object) or LocationAddress (object)
Responses
204No Content
400Bad request
401Unauthorized
404Not Found
405Method Not Allowed
413Payload Too Large
415Unsupported Media Type
422Unprocessable entity
503Service Unavailable
patch/vacancies/{external_id}
Request samples
application/json
{
  • "job_title": "Software engineer",
  • "job_description": "We are looking for a software engineer with great communication Skills in Ghent. Experience in front-end development, git, agile working is a plus.",
  • "active": true,
  • "languages": [
    ],
  • "company": "b3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "location": {
    }
}
Response samples
application/json
[
  • {
    }
]

Delete Vacancy

Remove a Vacancy from the system. This step deletes all information linked exclusively to this Vacancy. If these need to be removed as well, make sure to do this separately. By deleting a Vacancy, you delete their Skill Profile history, which cannot be recreated or recovered afterwards.

Request
Security:
application (write)
path Parameters
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
Responses
204No Content
401Unauthorized
404Not Found
405Method Not Allowed
503Service Unavailable
delete/vacancies/{external_id}
Response samples
application/json
[
  • {
    }
]

Skill Profile

Get the Skill Profile for a Vacancy

Get an export of the Vacancy 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!

Request
Security:
application (read)
path Parameters
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
response_format
string
Default: "list"

The format of the response profile.

Enum: "list" "trending" "domains"
Example: response_format=list
vocab_language
string
Default: "en_uk"

The display language used for Skill names. Altering the vocabulary language does not change the Skill Profile; it solely changes the way it is displayed. If not specified, the default language (en_uk) will be used. The en language is an alias for en_uk.

Enum: "en" "en_uk" "en_us" "de" "fr" "nl"
Example: vocab_language=en_uk
Responses
200OK
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
get/vacancies/{external_id}/skill_profile
Response samples
application/json
{
  • "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "skills": [
    ]
}

Update a Vacancy Skill Profile with feedback

Provide feedback about an existing Vacancy Skill Profile to update it inside the system. When the feedback_format query parameter is skills, the body of the feedback message updates the existing Skill Profile, so if a Skill is not present in the body, it will not be affected. The feedback can contain updates that either validate or remove the Skill.

Request
Security:
application (write)
path Parameters
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
feedback_format
string
Default: "skills"

The format in which feedback for the Skill Profile is given.

Enum: "skills" "external_vendor_skills"
Example: feedback_format=skills
Request Body schema: application/json
One of:
source
string

The source of the Skill Profile update.

Array of objects (SkillWithRequiredHasSkillArray)

The Skills contained in this profile. Either skill or skill_id must be provided, but not both.

Responses
204No Content
400Bad request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
415Unsupported Media Type
503Service Unavailable
patch/vacancies/{external_id}/skill_profile
Request samples
application/json
{
  • "source": "oracle",
  • "skills": [
    ]
}
Response samples
application/json
[
  • {
    }
]

Metrics

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 .

Get Vacancy count

Get the total number of Vacancy objects stored inside the system.

Request
Security:
application (read)
Responses
200OK
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
get/vacancies/metrics/count
Response samples
application/json
{
  • "entity_type": "Vacancy",
  • "entity_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "metric_name": "count",
  • "metric_value": 1000,
  • "last_update": "2020-09-01T11:45:49Z"
}

Search

Search for Vacancies based on free text

Search for Vacancies. Unlike other entities, searching happens based on the job_title text match by default, not based on Skills match.
Literal string matching is fuzzy, meaning that typo's and misspellings should still turn up desired results. For example, searching for deceptionist could still show receptionist Vacancy results.
Literal search will always result in a score of 1.0. A combination of both types is possible.

Request
Security:
application (read)
query Parameters
limit
integer [ 1 .. 100 ]
Default: 10

The maximal number of results returned.

Example: limit=10
offset
integer >= 0
Default: 0

The rank offset for returned matches, return matches starting from rank offset up to rank offset+limit.

score_min_threshold
number <float> [ 0 .. 1 ]
Default: 0.5

The minimum score of the results. Due to approximations for fast result-delivery, there might be records with a score slightly lower than the minimum.

Example: score_min_threshold=0.7
language
string
Default: "auto"

The language of the input text. auto will automatically detect the language used.

Enum: "auto" "nl" "fr" "en" "de"
Example: language=en
match_type
string
Default: "literal"

The type of matching. literal will search text-based. skills will use the Skills extracted from the input to find the best-matching Vacancies.

Enum: "literal" "skills"
Example: match_type=skills
Request Body schema: application/json
text
required
string

Input text.

Location (object) or LocationAddress (object)
required
Array of max_geo_distance (object) or custom_property (object) or custom_property_is_in_list (object) or custom_property_contains_element (object) or external_id_is_in_list (object) or is_active (object) or exclude_match_feedback (object)
required
Array of geo_distance (object) or custom_property (object) or skills_match (object)
Responses
200OK
400Bad request
401Unauthorized
403Forbidden
405Method Not Allowed
413Payload Too Large
415Unsupported Media Type
422Unprocessable entity
503Service Unavailable
post/vacanies/search
Request samples
application/json
{
  • "text": "Software Engineer",
  • "location": {
    },
  • "filters": [
    ],
  • "weights": [
    ]
}
Response samples
application/json
{
  • "results": [
    ]
}

CRUD

Courses in the Skill Engine API correspond to internal/external training or education.

More info about entities can be found on the How it Works page.

Custom Properties are supported for this entity.

List Courses

Get a list of all Courses available in the system. This can for example be used to keep track of proper synchronisation between your system and the Skill Engine API.

Request
Security:
application (read)
query Parameters
limit
integer [ 1 .. 200 ]
Default: 100

The maximal number of entities returned, ordered by the last_updated field and external_id.

Example: limit=50
offset
integer >= 0
Default: 0

The applied offset for returned entities, results starting from offset up to offset + limit.

is_active
boolean
Default: "None"

This parameter can be used to only include entities with the active attribute set to true or false. If the parameter is not set, all entities will be included.

Example: is_active=true
include
Array of strings

Additional entity attributes that will be included in the response body. This query parameter can be added multiple times to include more attributes.

Items Value: "custom_properties"
Example: include=custom_properties
Responses
200OK
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
get/courses
Response samples
application/json
{
  • "count": 3,
  • "results": [
    ]
}

Create Course

Submit new Course information to initialise its Skill Profile inside the Skill Engine API.

Request
Security:
application (write)
query Parameters
language
required
string

The language of the input data, which has an impact on the Skill extraction. auto will automatically detect the language used in the provided data.

Enum: "auto" "nl" "fr" "en" "de"
Example: language=en
strict
boolean
Default: true

If strict is enabled, entity creation will fail when a Skill Profile cannot be constructed. If strict is set to false, failed Skill Profile creation will still result in entity creation, but the Skill Profile will be empty.

Request Body schema: application/json
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

course_title
required
string [ 1 .. 255 ] characters

Title of the Course.

course_description
required
string non-empty

Textual description of the Course.

source
string [ 1 .. 255 ] characters

Source system or location of this Course.

active
boolean or null (CourseActive)
Default: true

The Course will not be used in matching if active is false. This is useful when a Course is being phased out.

Responses
204No Content
400Bad Request
401Unauthorized
403Forbidden
405Method Not Allowed
409Conflict
413Payload Too Large
415Unsupported Media Type
422Unprocessable entity
503Service Unavailable
post/courses
Request samples
application/json
{
  • "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "course_title": "Computer Science 101",
  • "course_description": "This Professional Certificate will start you at the absolute beginning teaching you about the fundamental binary language of modern computers. You’ll learn about the Turing Machine—a model for the digital computer. You’ll also learn the basics of analytic logic and how learning and applying basic principles of logic can help you both work with and work on technical solutions. You’ll work in a managed environment and learn to code your very first program in Python – a powerful but simple programming language used by app developers and data scientists.",
  • "source": "Udemy",
  • "active": true
}
Response samples
application/json
[
  • {
    }
]

Get Course

Get the Course information stored inside the system.

Request
Security:
application (read)
path Parameters
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
include
Array of strings

Additional entity attributes that will be included in the response body. This query parameter can be added multiple times to include more attributes.

Items Value: "custom_properties"
Example: include=custom_properties
Responses
200OK
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
get/courses/{external_id}
Response samples
application/json
{
  • "last_updated": "2021-01-21T17:32:28.000Z",
  • "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "course_title": "Computer Science 101",
  • "course_description": "This Professional Certificate will start you at the absolute beginning teaching you about the fundamental binary language of modern computers. You’ll learn about the Turing Machine—a model for the digital computer. You’ll also learn the basics of analytic logic and how learning and applying basic principles of logic can help you both work with and work on technical solutions. You’ll work in a managed environment and learn to code your very first program in Python – a powerful but simple programming language used by app developers and data scientists.",
  • "source": "Udemy",
  • "active": true
}

Update Course

Submit the most up-to-date Course 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.

Request
Security:
application (write)
path Parameters
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
language
required
string

The language of the input data, which has an impact on the Skill extraction. auto will automatically detect the language used in the provided data.

Enum: "auto" "nl" "fr" "en" "de"
Example: language=en
strict
boolean
Default: true

If strict is enabled, entity creation will fail when a Skill Profile cannot be constructed. If strict is set to false, failed Skill Profile creation will still result in entity creation, but the Skill Profile will be empty.

Request Body schema: application/json
course_title
string [ 1 .. 255 ] characters

Title of the Course.

course_description
string non-empty

Textual description of the Course.

source
string [ 1 .. 255 ] characters

Source system or location of this Course.

active
boolean or null (CourseActive)
Default: true

The Course will not be used in matching if active is false. This is useful when a Course is being phased out.

Responses
204No Content
400Bad request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
413Payload Too Large
415Unsupported Media Type
422Unprocessable entity
503Service Unavailable
patch/courses/{external_id}
Request samples
application/json
{
  • "course_title": "Computer Science 101",
  • "course_description": "This Professional Certificate will start you at the absolute beginning teaching you about the fundamental binary language of modern computers. You’ll learn about the Turing Machine—a model for the digital computer. You’ll also learn the basics of analytic logic and how learning and applying basic principles of logic can help you both work with and work on technical solutions. You’ll work in a managed environment and learn to code your very first program in Python – a powerful but simple programming language used by app developers and data scientists.",
  • "source": "Workday",
  • "active": true
}
Response samples
application/json
[
  • {
    }
]

Delete Course

Remove a Course from the system. This step deletes all information linked exclusively to this Course and cannot be undone.

Request
Security:
application (write)
path Parameters
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
Responses
204No Content
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
delete/courses/{external_id}
Response samples
application/json
[
  • {
    }
]

Skill Profile

Get the Skill Profile for a Course

Get an export of the Course 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!

Request
Security:
application (read)
path Parameters
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
response_format
string
Default: "list"

The format of the response profile.

Enum: "list" "trending" "domains"
Example: response_format=list
vocab_language
string
Default: "en_uk"

The display language used for Skill names. Altering the vocabulary language does not change the Skill Profile; it solely changes the way it is displayed. If not specified, the default language (en_uk) will be used. The en language is an alias for en_uk.

Enum: "en" "en_uk" "en_us" "de" "fr" "nl"
Example: vocab_language=en_uk
external_vendor
string (SupportedExternalVendors)

The external vendor language you want to see the Skills displayed in. This will only work for vendors that are activated on your tenant.

Value: "workday"
Example: external_vendor=workday
Responses
200OK
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
get/courses/{external_id}/skill_profile
Response samples
application/json
{
  • "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "skills": [
    ]
}

Update a Course Skill Profile with feedback

Provide feedback about an existing Course Skill Profile to update it inside the system. When the feedback_format query parameter is skills, the body of the feedback message updates the existing Skill Profile, so if a Skill is not present in the body, it will not be affected. The feedback can contain updates that either validate or remove the Skill.

Request
Security:
application (write)
path Parameters
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
feedback_format
string
Default: "skills"

The format in which feedback for the Skill Profile is given.

Enum: "skills" "external_vendor_skills"
Example: feedback_format=skills
Request Body schema: application/json
One of:
source
string

The source of the Skill Profile update.

Array of objects (SkillWithRequiredHasSkillArray)

The Skills contained in this profile. Either skill or skill_id must be provided, but not both.

Responses
204No Content
400Bad request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
415Unsupported Media Type
503Service Unavailable
patch/courses/{external_id}/skill_profile
Request samples
application/json
{
  • "source": "oracle",
  • "skills": [
    ]
}
Response samples
application/json
[
  • {
    }
]

Metrics

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 .

Get Course count

Get the total number of Course objects stored inside the system.

Request
Security:
application (read)
Responses
200OK
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
get/courses/metrics/count
Response samples
application/json
{
  • "entity_type": "Course",
  • "entity_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "metric_name": "count",
  • "metric_value": 1000,
  • "last_update": "2020-09-01T11:45:49Z"
}

CRUD

Skill Clusters in the Skill Engine API allow enterprise customers to use their own Skill Cluster framework.

More info about Skill Clusters can be found at the How it Works page and the Skill Cluster Tutorial.

Custom Properties are supported for this entity.

List Skill ClustersDeprecated

Get a list of all Skill Clusters available in the system. This can for example be used to keep track of proper synchronisation between your system and the Skill Engine API.

Request
Security:
application (read)
query Parameters
limit
integer [ 1 .. 200 ]
Default: 100

The maximal number of entities returned, ordered by the last_updated field and external_id.

Example: limit=50
offset
integer >= 0
Default: 0

The applied offset for returned entities, results starting from offset up to offset + limit.

Responses
200OK
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
get/skill_clusters
Response samples
application/json
{
  • "count": 3,
  • "results": [
    ]
}

Get Skill ClusterDeprecated

Get the Skill Cluster information stored inside the system.

Request
Security:
application (read)
path Parameters
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
include
Array of strings

Additional entity attributes that will be included in the response body. This query parameter can be added multiple times to include more attributes.

Items Value: "custom_properties"
Example: include=custom_properties
Responses
200OK
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
get/skill_clusters/{external_id}
Response samples
application/json
{
  • "last_updated": "2021-01-21T17:32:28.000Z",
  • "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "skill_cluster_name": "Audit",
  • "skill_cluster_description": "The ability and Skill to conduct audits, identifying exceptions and developing specific solutions or recommendations",
  • "skill_cluster_type": "taxonomy"
}

Skill Profile

Get the Skill Profile for a Skill ClusterDeprecated

Get an export of the Skill Cluster Skill Profile to leverage it for user interaction.

Request
Security:
application (read)
path Parameters
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
response_format
string
Default: "list"

The format in which the Skill Profile needs to be returned. More info about adding your Skill Clusters can be found in the tutorials.

Value: "list"
Example: response_format=list
vocab_language
string
Default: "en_uk"

The display language used for Skill names. Altering the vocabulary language does not change the Skill Profile; it solely changes the way it is displayed. If not specified, the default language (en_uk) will be used. The en language is an alias for en_uk.

Enum: "en" "en_uk" "en_us" "de" "fr" "nl"
Example: vocab_language=en_uk
Responses
200OK
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
get/skill_clusters/{external_id}/skill_profile
Response samples
application/json
{
  • "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "skills": [
    ],
  • "domain": "Machine Learning"
}

Metrics

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 .

Get Skill Cluster countDeprecated

Get the total number of Skill Cluster objects stored inside the system.

Request
Security:
application (read)
Responses
200OK
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
get/skill_clusters/metrics/count
Response samples
application/json
{
  • "entity_type": "SkillCluster",
  • "entity_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "metric_name": "count",
  • "metric_value": 1000,
  • "last_update": "2020-09-01T11:45:49Z"
}

CRUD

An External Company in the Skill Engine API represents any external company. They can be used to match against, using the Vacancies that are linked to them.

Employment and staffing customers can match candidates with external companies, even when they do not have an explicitly advertised position.

Enterprise customers can use External Companies too to profile and compare themselves to other External Companies.

More info about External Companies can be found on the How it Works page and the External Company tutorial.

Custom Properties are supported for this entity.

List External Companies

Get a list of all External Companies available in the system. This can for example be used to keep track of proper synchronisation between your system and the Skill Engine API.

Request
Security:
application (read)
query Parameters
limit
integer [ 1 .. 200 ]
Default: 100

The maximal number of entities returned, ordered by the last_updated field and external_id.

Example: limit=50
offset
integer >= 0
Default: 0

The applied offset for returned entities, results starting from offset up to offset + limit.

include
Array of strings

Additional entity attributes that will be included in the response body. This query parameter can be added multiple times to include more attributes.

Items Value: "custom_properties"
Example: include=custom_properties
Responses
200OK
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
get/companies
Response samples
application/json
{
  • "count": 2,
  • "results": [
    ]
}

Create External Company

Submit new External Company information to store inside the Skill Engine API.

Request
Security:
application (write)
Request Body schema: application/json
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

name
required
string [ 1 .. 255 ] characters

Name of the External Company.

vat
required
string [ 1 .. 15 ] characters

The VAT identification number for this External Company.

required
Location (object) or LocationAddress (object)
Array of objects or null (Language)

List of ISO 639-1 codes for language requirements of the External Company, combined with the proficiency level. The proficiency levels go from 1 (elementary proficiency) to 5 (native proficiency). If the level is omitted, the default proficiency level of 2 is used.

Responses
204No Content
400Bad Request
401Unauthorized
403Forbidden
405Method Not Allowed
409Conflict
413Payload Too Large
415Unsupported Media Type
503Service Unavailable
post/companies
Request samples
application/json
{
  • "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "name": "TechWolf",
  • "vat": "BE0702852201",
  • "location": {
    },
  • "languages": [
    ]
}
Response samples
application/json
[
  • {
    }
]

Get External Company

Get the External Company information stored inside the system.

Request
Security:
application (read)
path Parameters
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
include
Array of strings

Additional entity attributes that will be included in the response body. This query parameter can be added multiple times to include more attributes.

Items Value: "custom_properties"
Example: include=custom_properties
Responses
200OK
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
get/companies/{external_id}
Response samples
application/json
{
  • "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "name": "TechWolf",
  • "vat": "BE0702852201",
  • "location": {
    },
  • "languages": [
    ]
}

Update External Company

Submit the most up-to-date External Company information to update the information stored inside the system. Any field that is present will overwrite existing values within the system, while absent fields will be left as-is.

Request
Security:
application (write)
path Parameters
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
Request Body schema: application/json
name
string [ 1 .. 255 ] characters

Name of the External Company.

vat
string [ 1 .. 15 ] characters

The VAT identification number for this External Company.

Location (object) or LocationAddress (object)
Array of objects or null (Language)

List of ISO 639-1 codes for language requirements of the External Company, combined with the proficiency level. The proficiency levels go from 1 (elementary proficiency) to 5 (native proficiency). If the level is omitted, the default proficiency level of 2 is used.

Responses
204No Content
400Bad request
401Unauthorized
404Not Found
405Method Not Allowed
413Payload Too Large
415Unsupported Media Type
503Service Unavailable
patch/companies/{external_id}
Request samples
application/json
{
  • "name": "TechWolf",
  • "vat": "BE0702852201",
  • "location": {
    },
  • "languages": [
    ]
}
Response samples
application/json
[
  • {
    }
]

Delete External Company

Remove an External Company from the system. The External Company's linked Vacancies will be processed in cascade based on:

  • linked active Vacancy: the reference to the External Company is removed, but the Vacancy itself is not removed from the system.
  • linked inactive Vacancy: the reference to the External Company as well as the Vacancy itself is removed from the system.
Request
Security:
application (write)
path Parameters
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
Responses
204No Content
401Unauthorized
404Not Found
405Method Not Allowed
503Service Unavailable
delete/companies/{external_id}
Response samples
application/json
[
  • {
    }
]

List External Company's Vacancies

Get an overview of all the Vacancies stored inside the system that are linked to the specified External Company.

Request
Security:
application (read)
path Parameters
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
Responses
200OK
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
get/companies/{external_id}/vacancies
Response samples
application/json
{
  • "count": 3,
  • "results": [
    ]
}

Upload and add desired functions

Upload a list of desired functions that will be created as inactive pseudo Vacancies linked to the External Company. If no Skill Profile can be created from the Job title alone, the desired function will not be stored. The desired function Vacancies will be added to the already existing desired function Vacancies of the External Company.

Request
Security:
application (write)
path Parameters
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
language
required
string

The language of the input data, which has an impact on the Skill extraction. auto will automatically detect the language used in the provided data.

Enum: "auto" "nl" "fr" "en" "de"
Example: language=en
request_format
string
Default: "list"

Explicitly sets the input format used to represent the submitted desired functions as either:

  • a structured list of Job title objects.
  • free-text multiline string input in which each line contains at most one Job title.
Enum: "list" "free_text"
Example: request_format=list
Request Body schema: application/json
One of:
required
Array of objects (job_title)
Responses
204No Content
400Bad request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
post/companies/{external_id}/desired_functions
Request samples
application/json
{
  • "titles": [
    ]
}
Response samples
application/json
[
  • {
    }
]

Replace existing desired functions

Replace the list of desired functions that are used as inactive pseudo Vacancies linked to the External Company. If no Skill Profile can be created from the Job title alone, the desired function will not be stored. Previously existing desired function Vacancies will be removed when using this endpoint.

Request
Security:
application (write)
path Parameters
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
language
required
string

The language of the input data, which has an impact on the Skill extraction. auto will automatically detect the language used in the provided data.

Enum: "auto" "nl" "fr" "en" "de"
Example: language=en
request_format
string
Default: "list"

Explicitly sets the input format used to represent the submitted desired functions as either:

  • a structured list of Job title objects.
  • free-text multiline string input in which each line contains at most one Job title.
Enum: "list" "free_text"
Example: request_format=list
Request Body schema: application/json
One of:
required
Array of objects (job_title)
Responses
204No Content
400Bad request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
put/companies/{external_id}/desired_functions
Request samples
application/json
{
  • "titles": [
    ]
}
Response samples
application/json
[
  • {
    }
]

Profile External Company's hiring activity with NACE-codes

Profiles the market-average hiring activity of an External Company based on their linked NACE-codes by creating corresponding pseudo-Vacancies in the system. This operation is additive and remembers previously profiled pseudo-Vacancies.

Request
Security:
application (write)
path Parameters
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
type
required
string non-empty

As European member states are free to deepen the baselist of NACE codes to classify economic activities, this parameter specifies the derivative set of NACE codes used as input. For example, NACEBEL-codes are standard use in Belgium.

Value: "nace_bel"
Example: type=nace_bel
Request Body schema: application/json
nace_codes
required
Array of strings (NACE-code) [ 1 .. 7 ] characters

Collection of NACE-codes used to profile the External Company. Cannot be empty.

Responses
204No Content
400Bad request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
post/companies/{external_id}/nace
Request samples
application/json
{
  • "nace_codes": [
    ]
}
Response samples
application/json
[
  • {
    }
]

Reprofile External Company's hiring activity with NACE-codes

Profiles the market-average hiring activity of an External Company based on their linked NACE-codes by creating corresponding pseudo-Vacancies in the system. This operation is substituting and replaces previously profiled pseudo-Vacancies.

Request
Security:
application (write)
path Parameters
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
type
required
string non-empty

As European member states are free to deepen the baselist of NACE codes to classify economic activities, this parameter specifies the derivative set of NACE codes used as input. For example, NACEBEL-codes are standard use in Belgium.

Value: "nace_bel"
Example: type=nace_bel
Request Body schema: application/json
nace_codes
required
Array of strings (NACE-code)

Collection of NACE-codes used to profile the External Company. When empty, all existing pseudo-Vacancies are removed.

Responses
204No Content
400Bad request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
put/companies/{external_id}/nace
Request samples
application/json
{
  • "nace_codes": [
    ]
}
Response samples
application/json
[
  • {
    }
]

Search

Search for External Companies based on free text

Search for External Companies

Request
Security:
application (read)
query Parameters
limit
integer [ 1 .. 100 ]
Default: 10

The maximal number of results returned.

Example: limit=10
offset
integer >= 0
Default: 0

The rank offset for returned matches, return matches starting from rank offset up to rank offset+limit.

score_min_threshold
number <float> [ 0 .. 1 ]
Default: 0.5

The minimum score of the results. Due to approximations for fast result-delivery, there might be records with a score slightly lower than the minimum.

Example: score_min_threshold=0.7
language
string
Default: "auto"

The language of the input text. auto will automatically detect the language used.

Enum: "auto" "nl" "fr" "en" "de"
Example: language=en
Request Body schema: application/json
text
required
string

Input text.

Location (object) or LocationAddress (object)
required
Array of max_geo_distance (object) or custom_property (object) or custom_property_is_in_list (object) or custom_property_contains_element (object) or external_id_is_in_list (object)
required
Array of geo_distance (object) or custom_property (object) or skills_match (object)
Responses
200OK
400Bad request
401Unauthorized
403Forbidden
405Method Not Allowed
413Payload Too Large
415Unsupported Media Type
422Unprocessable entity
503Service Unavailable
post/companies/search
Request samples
application/json
{
  • "text": "Bakery",
  • "location": {
    },
  • "filters": [
    ],
  • "weights": [
    ]
}
Response samples
application/json
{
  • "results": [
    ]
}

Search for Skills similar to the text provided

Request
Security:
application (read)
query Parameters
query
required
string <= 100 characters
Example: query=Machine%20le
limit
integer >= 1
Default: 10

The maximal number of results returned.

Example: limit=10
search_method
string
Default: "autocomplete"

Indicates how Skills are searched for with the given query.

Value: "autocomplete"
Example: search_method=autocomplete
domain_namespace
string
Default: "techwolf"

The Domain namespace determines the Domains the Skills will be mapped to. Using techwolf will map them to the default TechWolf domains. Using taxonomy will map them to the custom Domains defined in your Taxonomy. Using adaptive will map the Skills to the Domains in the custom Taxonomy if there is one present, otherwise it will fall back to the default Techwolf Domains.

Enum: "techwolf" "taxonomy" "adaptive"
Example: domain_namespace=taxonomy
Responses
200OK
401Unauthorized
403Forbidden
405Method Not Allowed
422Unprocessable entity
503Service Unavailable
get/skills/search
Response samples
application/json
[
  • {
    }
]

Skill Gaps

Get the Skillgap between an Employee and a Vacancy

Request
Security:
application (read)
path Parameters
employee_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique external ID linked to this Employee, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
vacancy_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique external ID linked to this Vacancy, consisting of alphanumeric characters, hyphens and underscores.

Example: b003505-eb84-42dc-a79f-5e7b1fe897b7
Responses
200OK
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
get/employees/{employee_external_id}/vacancies/{vacancy_external_id}/gap
Response samples
application/json
[
  • {
    }
]

Skill Lookup

Look up the Skill IDs of a list of Skill names

Request
Security:
application (read)
Request Body schema: application/json
skill_names
required
Array of strings

A list of Skill names.

Responses
200OK
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
post/skills/lookup
Request samples
application/json
{
  • "skill_names": [
    ]
}
Response samples
application/json
[
  • {
    }
]

Organisational Units

Organisational Units in the Skill Engine API represent groupings of Employees arranged in a hierarchical structure.

Custom Properties are supported for this entity.

List Organisational Units

Get a list of all Organisational Units available in the system.

Request
Security:
application (read)
query Parameters
limit
integer [ 1 .. 200 ]
Default: 100

The maximal number of entities returned, ordered by the last_updated field and external_id.

Example: limit=50
offset
integer >= 0
Default: 0

The applied offset for returned entities, results starting from offset up to offset + limit.

parent_id
string

This parameter can be used to only include Organisational Units with the specified parent_id as their direct parent. If parent_id="null", only root Organisational Units are included. If the parameter is not set, all entities will be included.

Example: parent_id=c3903505-eb84-42dc-a79f-5d8b1fe897b7
Responses
200OK
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
get/organisational_units
Response samples
application/json
{
  • "count": 3,
  • "results": [
    ]
}

Create Organisational Unit

Create a new Organisational Unit in the Skill Engine API.

Request
Security:
application (write)
Request Body schema: application/json
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

name
required
string [ 1 .. 100 ] characters

The name of the Organisational Unit.

active
boolean
Default: true

Indicates whether the Organisational Unit is active or not.

parent_id
string <uuid> [ 1 .. 100 ] characters [a-zA-Z0-9_-]+
Default: null

Unique identifier for the parent Organisational Unit, establishing the organisational structure. Organisational Units with parent_id==None are root Organisational Units.

Responses
204No Content
400Bad Request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
409Conflict
413Payload Too Large
415Unsupported Media Type
422Unprocessable entity
503Service Unavailable
post/organisational_units
Request samples
application/json
{
  • "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "name": "Engineering",
  • "active": true,
  • "parent_id": "b4824606-fc95-53ed-b80g-6f8c2ge908c8"
}
Response samples
application/json
[
  • {
    }
]

Get Organisational Unit

Get the Organisational Unit information stored inside the system.

Request
Security:
application (read)
path Parameters
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
Responses
200OK
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
get/organisational_units/{external_id}
Response samples
application/json
{
  • "external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "name": "Engineering",
  • "active": true,
  • "parent_id": "b4824606-fc95-53ed-b80g-6f8c2ge908c8",
  • "total_nr_of_employees": 13
}

Update Organisational Unit

Submit the most up-to-date Organisational Unit information. Any field that is present will overwrite existing values within the system, while absent fields will be left as-is.

Request
Security:
application (write)
path Parameters
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
Request Body schema: application/json
name
string [ 1 .. 255 ] characters

Name of the Organisational Unit.

active
boolean
Default: true

Indicates whether the Organisational Unit is active or not.

parent_id
string <uuid> [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique identifier for the parent Organisational Unit, establishing the organisational structure. Organisational Units with parent_id==None are root Organisational Units.

Responses
204No Content
400Bad request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
413Payload Too Large
415Unsupported Media Type
422Unprocessable entity
503Service Unavailable
patch/organisational_units/{external_id}
Request samples
application/json
{
  • "name": "Engineering",
  • "active": true,
  • "parent_id": "b4824606-fc95-53ed-b80g-6f8c2ge908c8"
}
Response samples
application/json
[
  • {
    }
]

Delete Organisational Unit

Remove an Organisational Unit and all its subordinate units from the system. This action will remove all information associated exclusively with these units and cannot be undone.

Request
Security:
application (write)
path Parameters
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
Responses
204No Content
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
delete/organisational_units/{external_id}
Response samples
application/json
[
  • {
    }
]

Definitions

Custom Properties within the Skill Engine API offer users the capability to finely customize attributes for a wide array of entities, including:

More info about entities can be found on the How it Works page.

Get all Custom Property Definitions

Get a list of all the Custom Property Definitions stored inside the system.

Request
Security:
application (read)
path Parameters
entity_type
required
Responses
200OK
403Forbidden
405Method Not Allowed
503Service Unavailable
get/{entity_type}/custom_properties
Response samples
application/json
[
  • {
    },
  • {
    }
]

Create a Custom Property Definition

Create a new Custom Property Definition in the system.

Request
Security:
application (write)
path Parameters
entity_type
required
Request Body schema: application/json
property_name
required
string [ 1 .. 100 ] characters

The name of the Custom Property. Can not contain __.

property_type
required
string [ 1 .. 10 ] characters

Expected type of the Custom Property.

Enum: "text" "number" "boolean" "list[text]" "datetime"
Responses
204No Content
400Bad request
401Unauthorized
405Method Not Allowed
503Service Unavailable
post/{entity_type}/custom_properties
Request samples
application/json
{
  • "property_name": "sector",
  • "property_type": "text"
}
Response samples
application/json
[
  • {
    }
]

Get Custom Property Definition

Get the Custom Property Definition information stored inside the system.

Request
Security:
application (read)
path Parameters
entity_type
required
required
object (CustomPropertyDefinitionPropertyName)

CustomPropertyDefinition property name.

Responses
200OK
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
get/{entity_type}/custom_properties/{property_name}
Response samples
application/json
{
  • "property_name": "sector",
  • "property_type": "text"
}

Rename a Custom Property Definition

Rename a Custom Property Definition.

Request
Security:
application (write)
path Parameters
entity_type
required
required
object (CustomPropertyDefinitionPropertyName)

CustomPropertyDefinition property name.

Request Body schema: application/json
property_name
required
string [ 1 .. 100 ] characters

The name of the Custom Property. Can not contain __.

Responses
204No Content
400Bad request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
409Conflict
415Unsupported Media Type
503Service Unavailable
patch/{entity_type}/custom_properties/{property_name}
Request samples
application/json
{
  • "property_name": "sector"
}
Response samples
application/json
[
  • {
    }
]

Remove a Custom Property Definition from the system

Remove a Custom Property Definition from the system.

Request
Security:
application (write)
path Parameters
entity_type
required
required
object (CustomPropertyDefinitionPropertyName)

CustomPropertyDefinition property name.

Responses
204No Content
401Unauthorized
404Not Found
405Method Not Allowed
503Service Unavailable
delete/{entity_type}/custom_properties/{property_name}
Response samples
application/json
[
  • {
    }
]

Properties

Retrieve all Custom Properties of an entity

Fetch all entity's Custom Properties from the system (if any exists, otherwise an empty list is returned).

Request
Security:
application (read)
path Parameters
entity_type
required
entity_type_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique external ID linked to this entity, consisting of alphanumeric characters, hyphens and underscores. Note that the endpoint taxonomy/skills uses skill_id.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
Responses
200OK
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
get/{entity_type}/{entity_type_external_id}/custom_properties
Response samples
application/json
[
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    }
]

Update Custom Properties of an entity

In addition to the default fields available for each entity, a set of Custom Properties can be added. Each entity is allowed to have a maximum of 100 properties, with properties being numbers or strings (maximum length 1000 characters).

Request
Security:
application (write)
path Parameters
entity_type
required
entity_type_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique external ID linked to this entity, consisting of alphanumeric characters, hyphens and underscores. Note that the endpoint taxonomy/skills uses skill_id.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
Request Body schema: application/json
Array ([ 1 .. 100 ] items)
property_name
required
string [ 1 .. 100 ] characters

The name of the Custom Property. Can not contain __.

required
boolean or (Number (integer or number)) or (Date (string or string)) or string or Array of strings

Fill in the value of the property.

Responses
204No Content
400Bad request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
413Payload Too Large
415Unsupported Media Type
422Unprocessable entity
503Service Unavailable
patch/{entity_type}/{entity_type_external_id}/custom_properties
Request samples
application/json
[
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    }
]
Response samples
application/json
{
  • "title": "400 Bad Request",
  • "description": "The request body was not structured correctly."
}

Replace Custom Properties of an entity

In addition to the default fields available for each entity, a set of Custom Properties can be added. Each entity is allowed to have a maximum of 100 properties, with properties being numbers or strings (maximum length 1000 characters).

Request
Security:
application (write)
path Parameters
entity_type
required
entity_type_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique external ID linked to this entity, consisting of alphanumeric characters, hyphens and underscores. Note that the endpoint taxonomy/skills uses skill_id.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
Request Body schema: application/json
Array ([ 1 .. 100 ] items)
property_name
required
string [ 1 .. 100 ] characters

The name of the Custom Property. Can not contain __.

required
boolean or (Number (integer or number)) or (Date (string or string)) or string or Array of strings

Fill in the value of the property.

Responses
204No Content
400Bad request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
413Payload Too Large
415Unsupported Media Type
422Unprocessable entity
503Service Unavailable
put/{entity_type}/{entity_type_external_id}/custom_properties
Request samples
application/json
[
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    }
]
Response samples
application/json
{
  • "title": "400 Bad Request",
  • "description": "The request body was not structured correctly."
}

Delete all Custom Properties of an entity

Drop all entity's Custom Properties from the system (if any exists).

Request
Security:
application (write)
path Parameters
entity_type
required
entity_type_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique external ID linked to this entity, consisting of alphanumeric characters, hyphens and underscores. Note that the endpoint taxonomy/skills uses skill_id.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
Responses
204No Content
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
delete/{entity_type}/{entity_type_external_id}/custom_properties
Response samples
application/json
[
  • {
    }
]

Vacancy Matching

The Skill Engine API allows you to fetch matching entities and External Companies with a wide range of different configurations. The system leverages a set of filters (constraints that are applied before matching, making a binary decision for each entity whether they should be considered) and weights (reweighting of the match scores) to let you tailor results to your wishes. You can find more information about how filters work here.

Match results can be queried in a paginated manner, allowing you to iteratively fetch all relevant results for a match query using the common limit and offset setup. Under the hood, the Skill Engine API uses a two-step process to enable paginated results: first, approximate matching is applied to create an initial ordering of results, followed by refinement of these results into the final scores. The ordering of the results, and therefore also the contents of any given page, are determined entirely by the approximate matching. This allows us to provide high volumes of matches without the delay caused by refining all possible matches for every single query. As approximate and refined scores can in some cases deviate from each other slightly, it is expected that in some cases the last result of a given page can have a lower score than the first result of the next -- if this is problematic for your use case (i.e. you want the exact top 10), then we recommend using a higher limit and trimming down results, as this suffices to capture any reordering caused by refinement.

By default, a geographic distance filter is applied by default such that only entities within a 50 km range are considered. This range can be adapted by configuring the max_geo_distance filter. To retain fast response times, any matching request that has more than 10.000 entities fulfilling all filter criteria will be cut off at the 10.000 entities that are geographically closest to the search point.

Get the top matching Vacancies for an Employee

You can use filters in the request body to restrict the match results based on distance, language & Custom Properties. If the max_geo_distance filter is not provided, a default value of 50km is used.

Request
Security:
application (read)
path Parameters
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
score_min_threshold
number <float> [ 0 .. 1 ]
Default: 0.5

The minimum score of the results. Due to approximations for fast result-delivery, there might be records with a score slightly lower than the minimum.

Example: score_min_threshold=0.7
limit
integer [ 1 .. 100 ]
Default: 10

The maximal number of results returned.

Example: limit=10
offset
integer >= 0
Default: 0

The rank offset for returned matches, return matches starting from rank offset up to rank offset+limit.

response_format
string
Default: "simple"

If set to explained, the response will include an explanation of the match.

Enum: "simple" "explained"
Example: response_format=explained
include
Array of strings

Additional entity attributes that will be included in the response body. This query parameter can be added multiple times to include more attributes. When include entity is used, the response will include the titles and descriptions of the matched Vacancies.

Items Enum: "custom_properties" "entity" "location" "relevant_experience" "score_breakdown" "match_feedback"
Example: include=custom_properties&include=entity&include=location
Request Body schema: application/json
required
Array of max_geo_distance (object) or multi_max_geo_distances (object) or language (object) or last_updated (object) or custom_property_equal (object) or custom_property (object) or custom_property_is_in (object) or custom_property_is_in_list (object) or custom_property_contains (object) or custom_property_contains_element (object) or custom_property_list_overlap (object) or external_id_is_in_list (object) or exclude_match_feedback (object)
required
Array of skills_match (object) or desired_functions (object) or geo_distance (object) or language (object) or custom_property (object) or custom_property_is_in (object) or custom_property_is_in_list (object) or custom_property_contains (object) or custom_property_contains_element (object) or custom_property_list_overlap (object)
used_event_types
Array of strings

If not empty, only Skill Events of the types listed here will be taken into account to perform the matching. Learn more about the Skill Event Types at How it works.

Items Enum: "working_history" "education_history" "resume_document" "learning" "goal" "project" "ticket" "certificate" "skill_notes"
Responses
200OK
400Bad request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
post/employees/{external_id}/matching_vacancies
Request samples
application/json
{
  • "filters": [
    ],
  • "weights": [
    ],
  • "used_event_types": [
    ]
}
Response samples
application/json
{
  • "results": [
    ]
}

Get the match score between an Employee and a Vacancy

Request
Security:
application (read)
path Parameters
employee_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique external ID linked to this Employee, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
vacancy_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique external ID linked to this Vacancy, consisting of alphanumeric characters, hyphens and underscores.

Example: b003505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
response_format
string
Default: "simple"

If set to explained, the response will include an explanation of the match.

Enum: "simple" "explained"
Example: response_format=explained
include
Array of strings

Additional entity attributes that will be included in the response body. This query parameter can be added multiple times to include more attributes.

Items Value: "relevant_experience"
Example: include=relevant_experience
Responses
200OK
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
get/employees/{employee_external_id}/vacancies/{vacancy_external_id}/match
Response samples
application/json
{
  • "employee_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "vacancy_id": "b003505-eb84-42dc-a79f-5e7b1fe897b7",
  • "score": 0.87657
}

Get the top matching Employees for a Vacancy.

You can use filters in the request body to restrict the match results based on distance, language & Custom Properties. If the max_geo_distance filter is not provided, a default value of 50km is used.

Request
Security:
application (read)
path Parameters
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
score_min_threshold
number <float> [ 0 .. 1 ]
Default: 0.5

The minimum score of the results. Due to approximations for fast result-delivery, there might be records with a score slightly lower than the minimum.

Example: score_min_threshold=0.7
limit
integer [ 1 .. 100 ]
Default: 10

The maximal number of results returned.

Example: limit=10
offset
integer >= 0
Default: 0

The rank offset for returned matches, return matches starting from rank offset up to rank offset+limit.

response_format
string
Default: "simple"

If set to explained, the response will include an explanation of the match.

Enum: "simple" "explained"
Example: response_format=explained
include
Array of strings

Additional entity attributes that will be included in the response body. This query parameter can be added multiple times to include more attributes. When include entity is used, the response will include the assigned positions and working histories of the matched Employees.

Items Enum: "custom_properties" "entity" "location" "relevant_experience" "score_breakdown" "match_feedback"
Example: include=custom_properties&include=entity&include=location
Request Body schema: application/json
required
Array of max_geo_distance (object) or multi_max_geo_distances (object) or language (object) or last_updated (object) or custom_property_equal (object) or custom_property (object) or custom_property_is_in (object) or custom_property_is_in_list (object) or custom_property_contains (object) or custom_property_contains_element (object) or custom_property_list_overlap (object) or external_id_is_in_list (object) or exclude_match_feedback (object)
required
Array of skills_match (object) or desired_functions (object) or geo_distance (object) or language (object) or custom_property (object) or custom_property_is_in (object) or custom_property_is_in_list (object) or custom_property_contains (object) or custom_property_contains_element (object) or custom_property_list_overlap (object)
Responses
200OK
400Bad request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
post/vacancies/{external_id}/matching_employees
Request samples
application/json
{
  • "filters": [
    ],
  • "weights": [
    ]
}
Response samples
application/json
{
  • "results": [
    ]
}

Course Recommendations

Get Course recommendations to improve the Skill Profile of an EmployeeDeprecated

Request
Security:
application (read)
path Parameters
employee_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique external ID linked to this Employee, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
limit
integer [ 1 .. 100 ]
Default: 10

The maximal number of results returned.

Example: limit=10
score_min_threshold
number <float> [ 0 .. 1 ]
Default: 0.5

The minimum score of the results. Due to approximations for fast result-delivery, there might be records with a score slightly lower than the minimum.

Example: score_min_threshold=0.7
response_format
string
Default: "simple"

The response format determines which additional data is returned along with the matches. Currently only supports the 'simple' format.

Value: "simple"
Example: response_format=simple
include
Array of strings

Additional entity attributes that will be included in the response body. This query parameter can be added multiple times to include more attributes.

Items Enum: "custom_properties" "entity"
Example: include=custom_properties&include=entity
Responses
200OK
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
get/employees/{employee_external_id}/recommended_courses
Response samples
application/json
{
  • "results": [
    ]
}

Get Course recommendations to improve the Skill Profile of an Employee

Courses that are connected through a SkillEvent with the Employee, indicating that the Employee has already taken the Course, are excluded from the recommendations. Additionally, Courses of which the active attribute is set to false are filtered out as well.

Request
Security:
application (read)
path Parameters
employee_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique external ID linked to this Employee, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
limit
integer [ 1 .. 100 ]
Default: 10

The maximal number of results returned.

Example: limit=10
score_min_threshold
number <float> [ 0 .. 1 ]
Default: 0.5

The minimum score of the results. Due to approximations for fast result-delivery, there might be records with a score slightly lower than the minimum.

Example: score_min_threshold=0.7
response_format
string
Default: "simple"

If set to explained, the response will include an explanation of the recommendation.

Enum: "simple" "explained"
Example: response_format=explained
use_adjacent_skills
boolean
Default: true

If set to true, Course recommendations will consider adjacent Skills in addition to literal Skill overlap. If set to false, recommendations will be based solely on literal Skill overlap.

Example: use_adjacent_skills=false
include
Array of strings

Additional entity attributes that will be included in the response body. This query parameter can be added multiple times to include more attributes. When include entity is used, the response will include the titles and descriptions of the recommended Courses.

Items Enum: "custom_properties" "entity"
Example: include=custom_properties&include=entity
Request Body schema: application/json
required
Array of custom_property (object) or exclude_match_feedback (object) or custom_property_is_in_list (object)
required
Array of skills_match (object)
Responses
200OK
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
post/employees/{employee_external_id}/recommended_courses
Request samples
application/json
{
  • "filters": [
    ],
  • "weights": [
    ]
}
Response samples
application/json
{
  • "results": [
    ]
}

Get Course recommendations to bridge the Skill gap between an Employee and a VacancyDeprecated

Request
Security:
application (read)
path Parameters
employee_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique external ID linked to this Employee, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
vacancy_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique external ID linked to this Vacancy, consisting of alphanumeric characters, hyphens and underscores.

Example: b003505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
limit
integer [ 1 .. 100 ]
Default: 10

The maximal number of results returned.

Example: limit=10
show_skills
boolean
Default: false

If true, the relevant Skills you can learn in each recommended Course are provided.

Example: show_skills=true
Responses
200OK
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
get/employees/{employee_external_id}/vacancies/{vacancy_external_id}/recommended_courses
Response samples
application/json
[
  • {
    }
]

Get Course recommendations to bridge the Skill gap between an Employee and a Vacancy

Courses that are connected through a SkillEvent with the Employee, indicating that the Employee has already taken the Course, are excluded from the recommendations. Additionally, Courses of which the active attribute is set to false are filtered out as well.

Request
Security:
application (read)
path Parameters
employee_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique external ID linked to this Employee, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
vacancy_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique external ID linked to this Vacancy, consisting of alphanumeric characters, hyphens and underscores.

Example: b003505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
limit
integer [ 1 .. 100 ]
Default: 10

The maximal number of results returned.

Example: limit=10
response_format
string
Default: "simple"

If set to explained, the response will include an explanation of the recommendation.

Enum: "simple" "explained"
Example: response_format=explained
use_adjacent_skills
boolean
Default: true

If set to true, Course recommendations will consider adjacent Skills in addition to literal Skill overlap. If set to false, recommendations will be based solely on literal Skill overlap.

Example: use_adjacent_skills=false
include
Array of strings

Additional entity attributes that will be included in the response body. This query parameter can be added multiple times to include more attributes. When include entity is used, the response will include the titles and descriptions of the recommended Courses.

Items Enum: "custom_properties" "entity"
Example: include=custom_properties&include=entity
Request Body schema: application/json
required
Array of custom_property (object) or exclude_match_feedback (object) or custom_property_is_in_list (object)
required
Array of skills_match (object)
Responses
200OK
400Bad request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
post/employees/{employee_external_id}/vacancies/{vacancy_external_id}/recommended_courses
Request samples
application/json
{
  • "filters": [
    ],
  • "weights": [
    ]
}
Response samples
application/json
{
  • "results": [
    ]
}

Get Course recommendations to bridge the Skill gap between an Employee and a Job

Courses that are connected through a SkillEvent with the Employee, indicating that the Employee has already taken the Course, are excluded from the recommendations. Additionally, Courses of which the active attribute is set to false are filtered out as well.

Request
Security:
application (read)
path Parameters
employee_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique external ID linked to this Employee, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
job_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique external ID linked to this Job, consisting of alphanumeric characters, hyphens and underscores.

Example: b003505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
limit
integer [ 1 .. 100 ]
Default: 10

The maximal number of results returned.

Example: limit=10
response_format
string
Default: "simple"

If set to explained, the response will include an explanation of the recommendation.

Enum: "simple" "explained"
Example: response_format=explained
use_adjacent_skills
boolean
Default: true

If set to true, Course recommendations will consider adjacent Skills in addition to literal Skill overlap. If set to false, recommendations will be based solely on literal Skill overlap.

Example: use_adjacent_skills=false
include
Array of strings

Additional entity attributes that will be included in the response body. This query parameter can be added multiple times to include more attributes. When include entity is used, the response will include the titles and descriptions of the recommended Courses.

Items Enum: "custom_properties" "entity"
Example: include=custom_properties&include=entity
Request Body schema: application/json
required
Array of last_updated (object) or custom_property_equal (object) or custom_property (object) or custom_property_is_in (object) or custom_property_is_in_list (object) or custom_property_contains (object) or custom_property_contains_element (object) or custom_property_list_overlap (object) or external_id_is_in_list (object)
required
Array of skills_match (object)

List of weights to be applied during matching. Currently, Skills match weight is the only supported weight for Job matching and is set to 1.0 by default.

Responses
200OK
400Bad request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
post/employees/{employee_external_id}/jobs/{job_external_id}/recommended_courses
Request samples
application/json
{
  • "filters": [
    ],
  • "weights": [
    ]
}
Response samples
application/json
{
  • "results": [
    ]
}

External Company Matching

Find the best Employees for a given External Company

You can use filters in the request body to restrict the match results based on distance, language & Custom Properties. If the max_geo_distance filter is not provided, a default value of 50km is used.

Request
Security:
application (read)
path Parameters
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
score_min_threshold
number <float> [ 0 .. 1 ]
Default: 0.5

The minimum score of the results. Due to approximations for fast result-delivery, there might be records with a score slightly lower than the minimum.

Example: score_min_threshold=0.7
limit
integer [ 1 .. 100 ]
Default: 10

The maximal number of results returned.

Example: limit=10
offset
integer >= 0
Default: 0

The rank offset for returned matches, return matches starting from rank offset up to rank offset+limit.

Request Body schema: application/json
required
Array of max_geo_distance (object) or language (object) or last_updated (object) or custom_property_equal (object) or custom_property (object) or custom_property_is_in (object) or custom_property_is_in_list (object) or custom_property_contains (object) or custom_property_contains_element (object) or custom_property_list_overlap (object) or external_id_is_in_list (object)
required
Array of skills_match (object) or desired_functions (object) or geo_distance (object) or custom_property (object) or custom_property_is_in (object) or custom_property_is_in_list (object) or custom_property_contains (object) or custom_property_contains_element (object) or custom_property_list_overlap (object)
Responses
200OK
400Bad request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
post/companies/{external_id}/matching_employees
Request samples
application/json
{
  • "filters": [
    ],
  • "weights": [
    ]
}
Response samples
application/json
{
  • "results": [
    ]
}

Find the best External Companies for a given Employee

You can use filters in the request body to restrict the match results based on distance, language & Custom Properties. If the max_geo_distance filter is not provided, a default value of 50km is used.

Request
Security:
application (read)
path Parameters
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
score_min_threshold
number <float> [ 0 .. 1 ]
Default: 0.5

The minimum score of the results. Due to approximations for fast result-delivery, there might be records with a score slightly lower than the minimum.

Example: score_min_threshold=0.7
limit
integer [ 1 .. 100 ]
Default: 10

The maximal number of results returned.

Example: limit=10
offset
integer >= 0
Default: 0

The rank offset for returned matches, return matches starting from rank offset up to rank offset+limit.

Request Body schema: application/json
required
Array of max_geo_distance (object) or language (object) or last_updated (object) or custom_property_equal (object) or custom_property (object) or custom_property_is_in (object) or custom_property_is_in_list (object) or custom_property_contains (object) or custom_property_contains_element (object) or custom_property_list_overlap (object) or external_id_is_in_list (object)
required
Array of skills_match (object) or desired_functions (object) or geo_distance (object) or language (object) or custom_property (object) or custom_property_is_in (object) or custom_property_is_in_list (object) or custom_property_contains (object) or custom_property_contains_element (object) or custom_property_list_overlap (object)
Responses
200OK
400Bad request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
post/employees/{external_id}/matching_companies
Request samples
application/json
{
  • "filters": [
    ],
  • "weights": [
    ]
}
Response samples
application/json
{
  • "results": [
    ]
}

Job Matching

Get the match score between an Employee and their assigned position

Request
Security:
application (read)
path Parameters
employee_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique external ID linked to this Employee, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
response_format
string
Default: "simple"

If set to explained, the response will include an explanation of the match.

Enum: "simple" "explained"
Example: response_format=explained
Responses
200OK
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
422Unprocessable entity
503Service Unavailable
get/employees/{employee_external_id}/match_assigned_position
Response samples
application/json
{
  • "job_id": "b003505-eb84-42dc-a79f-5e7b1fe897b7",
  • "employee_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "score": 0.87657
}

Get the match score between an Employee and a Job

Request
Security:
application (read)
path Parameters
employee_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique external ID linked to this Employee, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
job_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique external ID linked to this Job, consisting of alphanumeric characters, hyphens and underscores.

Example: b003505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
response_format
string
Default: "simple"

If set to explained, the response will include an explanation of the match.

Enum: "simple" "explained"
Example: response_format=explained
Responses
200OK
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
get/employees/{employee_external_id}/jobs/{job_external_id}/match
Response samples
application/json
{
  • "job_id": "b003505-eb84-42dc-a79f-5e7b1fe897b7",
  • "employee_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "score": 0.87657
}

Get the top matching Jobs for an Employee

Request
Security:
application (read)
path Parameters
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
score_min_threshold
number <float> [ 0 .. 1 ]
Default: 0.5

The minimum score of the results. Due to approximations for fast result-delivery, there might be records with a score slightly lower than the minimum.

Example: score_min_threshold=0.7
limit
integer [ 1 .. 100 ]
Default: 10

The maximal number of results returned.

Example: limit=10
offset
integer >= 0
Default: 0

The rank offset for returned matches, return matches starting from rank offset up to rank offset+limit.

response_format
string
Default: "simple"

If set to explained, the response will include an explanation of the match.

Enum: "simple" "explained"
Example: response_format=explained
include
Array of strings

Additional entity attributes that will be included in the response body. This query parameter can be added multiple times to include more attributes. When include entity is used, the response will include the name of the Job and the external ID of the corresponding Job Family.

Items Enum: "custom_properties" "entity"
Example: include=custom_properties&include=entity
Request Body schema: application/json
required
Array of last_updated (object) or custom_property_equal (object) or custom_property (object) or custom_property_is_in (object) or custom_property_is_in_list (object) or custom_property_contains (object) or custom_property_contains_element (object) or custom_property_list_overlap (object) or external_id_is_in_list (object)
required
Array of skills_match (object)

List of weights to be applied during matching. Currently, Skills match weight is the only supported weight for Job matching and is set to 1.0 by default.

Responses
200OK
400Bad request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
post/employees/{external_id}/matching_jobs
Request samples
application/json
{
  • "filters": [
    ],
  • "weights": [
    ]
}
Response samples
application/json
{
  • "results": [
    ]
}

Get the top matching Employees for a Job

Request
Security:
application (read)
path Parameters
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
score_min_threshold
number <float> [ 0 .. 1 ]
Default: 0.5

The minimum score of the results. Due to approximations for fast result-delivery, there might be records with a score slightly lower than the minimum.

Example: score_min_threshold=0.7
limit
integer [ 1 .. 100 ]
Default: 10

The maximal number of results returned.

Example: limit=10
offset
integer >= 0
Default: 0

The rank offset for returned matches, return matches starting from rank offset up to rank offset+limit.

response_format
string
Default: "simple"

If set to explained, the response will include an explanation of the match.

Enum: "simple" "explained"
Example: response_format=explained
include
Array of strings

Additional entity attributes that will be included in the response body. This query parameter can be added multiple times to include more attributes. When include entity is used, the response will include the assigned position and working history of the Employee.

Items Enum: "custom_properties" "entity"
Example: include=custom_properties&include=entity
Request Body schema: application/json
required
Array of last_updated (object) or custom_property_equal (object) or custom_property (object) or custom_property_is_in (object) or custom_property_is_in_list (object) or custom_property_contains (object) or custom_property_contains_element (object) or custom_property_list_overlap (object) or external_id_is_in_list (object)
required
Array of skills_match (object)

List of weights to be applied during matching. Currently, Skills match weight is the only supported weight for Job matching and is set to 1.0 by default.

Responses
200OK
400Bad request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
post/job_architecture/jobs/{external_id}/matching_employees
Request samples
application/json
{
  • "filters": [
    ],
  • "weights": [
    ]
}
Response samples
application/json
{
  • "results": [
    ]
}

Get the most relevant jobs from which can be hired for the given job.

Identify the most relevant jobs from which potential candidates can be hired to fill the given job's skill requirements. Relevant for succession planning.

Request
Security:
application (read)
path Parameters
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
score_min_threshold
number <float> [ 0 .. 1 ]
Default: 0.5

The minimum score of the results. Due to approximations for fast result-delivery, there might be records with a score slightly lower than the minimum.

Example: score_min_threshold=0.7
limit
integer [ 1 .. 100 ]
Default: 10

The maximal number of results returned.

Example: limit=10
offset
integer >= 0
Default: 0

The rank offset for returned matches, return matches starting from rank offset up to rank offset+limit.

response_format
string
Default: "simple"

If set to explained, the response will include an explanation of the match.

Enum: "simple" "explained"
Example: response_format=explained
include
Array of strings

Additional entity attributes that will be included in the response body. This query parameter can be added multiple times to include more attributes. When include entity is used, the response will include the job name of the source Job.

Items Enum: "custom_properties" "entity"
Example: include=custom_properties&include=entity
Request Body schema: application/json
required
Array of last_updated (object) or custom_property_equal (object) or custom_property (object) or custom_property_is_in (object) or custom_property_is_in_list (object) or custom_property_contains (object) or custom_property_contains_element (object) or custom_property_list_overlap (object) or external_id_is_in_list (object)
required
Array of skills_match (object)

List of weights to be applied during matching. Currently, Skills match weight is the only supported weight for Job matching and is set to 1.0 by default.

Responses
200OK
400Bad request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
post/job_architecture/jobs/{external_id}/matching_source_jobs
Request samples
application/json
{
  • "filters": [
    ],
  • "weights": [
    ]
}
Response samples
application/json
{
  • "results": [
    ]
}

Get the most relevant jobs to which can be moved from the given job.

Identify the most relevant jobs to which employees in the given job can be moved based on job skill requirements. Relevant for career development and internal mobility opportunities.

Request
Security:
application (read)
path Parameters
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
score_min_threshold
number <float> [ 0 .. 1 ]
Default: 0.5

The minimum score of the results. Due to approximations for fast result-delivery, there might be records with a score slightly lower than the minimum.

Example: score_min_threshold=0.7
limit
integer [ 1 .. 100 ]
Default: 10

The maximal number of results returned.

Example: limit=10
offset
integer >= 0
Default: 0

The rank offset for returned matches, return matches starting from rank offset up to rank offset+limit.

response_format
string
Default: "simple"

If set to explained, the response will include an explanation of the match.

Enum: "simple" "explained"
Example: response_format=explained
include
Array of strings

Additional entity attributes that will be included in the response body. This query parameter can be added multiple times to include more attributes. When include entity is used, the response will include the job name of the target Job.

Items Enum: "custom_properties" "entity"
Example: include=custom_properties&include=entity
Request Body schema: application/json
required
Array of last_updated (object) or custom_property_equal (object) or custom_property (object) or custom_property_is_in (object) or custom_property_is_in_list (object) or custom_property_contains (object) or custom_property_contains_element (object) or custom_property_list_overlap (object) or external_id_is_in_list (object)
required
Array of skills_match (object)

List of weights to be applied during matching. Currently, Skills match weight is the only supported weight for Job matching and is set to 1.0 by default.

Responses
200OK
400Bad request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
post/job_architecture/jobs/{external_id}/matching_target_jobs
Request samples
application/json
{
  • "filters": [
    ],
  • "weights": [
    ]
}
Response samples
application/json
{
  • "results": [
    ]
}

Job Family Matching

Get the match score between an Employee and a Job Family

Request
Security:
application (read)
path Parameters
employee_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique external ID linked to this Employee, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
job_family_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique external ID linked to this Job, consisting of alphanumeric characters, hyphens and underscores.

Example: b003505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
response_format
string
Default: "simple"

If set to explained, the response will include an explanation of the match.

Enum: "simple" "explained"
Example: response_format=explained
Responses
200OK
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
get/employees/{employee_external_id}/job_families/{job_family_external_id}/match
Response samples
application/json
{
  • "job_family_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "employee_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
  • "score": 0.87657
}

Get the top matching Job Families for an Employee

Request
Security:
application (read)
path Parameters
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
limit
integer [ 1 .. 100 ]
Default: 10

The maximal number of results returned.

Example: limit=10
offset
integer >= 0
Default: 0

The rank offset for returned matches, return matches starting from rank offset up to rank offset+limit.

response_format
string
Default: "simple"

If set to explained, the response will include an explanation of the match.

Enum: "simple" "explained"
Example: response_format=explained
include
Array of strings

Additional entity attributes that will be included in the response body. This query parameter can be added multiple times to include more attributes. When include entity is used, the response will include the name of the Job Family and Job Family Group. attributes. When include entity is used, the response will include the name of the Job Family and Job Family Group.

Items Enum: "entity" "custom_properties"
Example: include=entity&include=custom_properties
Request Body schema: application/json
required
Array of last_updated (object) or custom_property_equal (object) or custom_property (object) or custom_property_is_in (object) or custom_property_is_in_list (object) or custom_property_contains (object) or custom_property_contains_element (object) or custom_property_list_overlap (object) or external_id_is_in_list (object)
required
Array of skills_match (object)

List of weights to be applied during matching. Currently, Skills match weight is the only supported weight for Job Family matching and is set to 1.0 by default.

Responses
200OK
400Bad request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
post/employees/{external_id}/matching_job_families
Request samples
application/json
{
  • "filters": [
    ],
  • "weights": [
    ]
}
Response samples
application/json
{
  • "results": [
    ]
}

Get the top matching Employees for a Job Family

Request
Security:
application (read)
path Parameters
external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
query Parameters
score_min_threshold
number <float> [ 0 .. 1 ]
Default: 0.5

The minimum score of the results. Due to approximations for fast result-delivery, there might be records with a score slightly lower than the minimum.

Example: score_min_threshold=0.7
limit
integer [ 1 .. 100 ]
Default: 10

The maximal number of results returned.

Example: limit=10
offset
integer >= 0
Default: 0

The rank offset for returned matches, return matches starting from rank offset up to rank offset+limit.

response_format
string
Default: "simple"

If set to explained, the response will include an explanation of the match.

Enum: "simple" "explained"
Example: response_format=explained
include
Array of strings

Additional entity attributes that will be included in the response body. This query parameter can be added multiple times to include more attributes. When include entity is used, the response will include the assigned position and working history of the Employee.

Items Enum: "custom_properties" "entity"
Example: include=custom_properties&include=entity
Request Body schema: application/json
required
Array of last_updated (object) or custom_property_equal (object) or custom_property (object) or custom_property_is_in (object) or custom_property_is_in_list (object) or custom_property_contains (object) or custom_property_contains_element (object) or custom_property_list_overlap (object) or external_id_is_in_list (object)
required
Array of skills_match (object)

List of weights to be applied during matching. Currently, Skills match weight is the only supported weight for Job Family matching and is set to 1.0 by default.

Responses
200OK
400Bad request
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
post/job_architecture/job_families/{external_id}/matching_employees
Request samples
application/json
{
  • "filters": [
    ],
  • "weights": [
    ]
}
Response samples
application/json
{
  • "results": [
    ]
}

Match Feedback

Give feedback on the match between an Employee and a Vacancy

Request
Security:
application (write)
path Parameters
employee_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique external ID linked to this Employee, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
vacancy_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique external ID linked to this Vacancy, consisting of alphanumeric characters, hyphens and underscores.

Example: b003505-eb84-42dc-a79f-5e7b1fe897b7
Request Body schema: application/json
feedback
required
string

Thumbs up or down can indicate whether a match is positive or negative.

Enum: "thumbs_up" "thumbs_down"
Responses
204No Content
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
post/employees/{employee_external_id}/vacancies/{vacancy_external_id}/match_feedback
Request samples
application/json
{
  • "feedback": "thumbs_up"
}
Response samples
application/json
[
  • {
    }
]

Delete feedback on the match between an Employee and a Vacancy

Request
Security:
application (write)
path Parameters
employee_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique external ID linked to this Employee, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
vacancy_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique external ID linked to this Vacancy, consisting of alphanumeric characters, hyphens and underscores.

Example: b003505-eb84-42dc-a79f-5e7b1fe897b7
Responses
204No Content
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
delete/employees/{employee_external_id}/vacancies/{vacancy_external_id}/match_feedback
Response samples
application/json
[
  • {
    }
]

Give feedback on the recommendation of a Course for an Employee.

Request
Security:
application (write)
path Parameters
employee_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique external ID linked to this Employee, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
course_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique external ID linked to this Course, consisting of alphanumeric characters, hyphens and underscores.

Example: b003505-eb84-42dc-a79f-5e7b1fe897b7
Request Body schema: application/json
feedback
required
string

Thumbs up or down can indicate whether a match is positive or negative.

Enum: "thumbs_up" "thumbs_down"
Responses
204No Content
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
post/employees/{employee_external_id}/courses/{course_external_id}/match_feedback
Request samples
application/json
{
  • "feedback": "thumbs_up"
}
Response samples
application/json
[
  • {
    }
]

Delete feedback on the match between an Employee and a Course

Request
Security:
application (write)
path Parameters
employee_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique external ID linked to this Employee, consisting of alphanumeric characters, hyphens and underscores.

Example: a3903505-eb84-42dc-a79f-5e7b1fe897b7
course_external_id
required
string <uuid> (UUID) [ 1 .. 100 ] characters [a-zA-Z0-9_-]+

Unique external ID linked to this Course, consisting of alphanumeric characters, hyphens and underscores.

Example: b003505-eb84-42dc-a79f-5e7b1fe897b7
Responses
204No Content
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
delete/employees/{employee_external_id}/courses/{course_external_id}/match_feedback
Response samples
application/json
[
  • {
    }
]

Filters

A crucial aspect of the configurability of matchmaking inside Skill Engine API is the use of filters. You can see filters as hard constraints that are applied prior to the calculation of any Skills based match. The filters available for a matching endpoint are described in the specification of this endpoint, but for further clarification, this section provides a more complete overview.

Filters can apply to one side of the matching equation, or can use both. In the latter case, we distinguish between the source entity (the one you are searching matches for) and the target entities (the ones you are searching for matches within). For example, if you request matches on /vacancies/{vid}/matching_employees, then the source entity is the Vacancy with external_id vid, while the target entities consist of all Employees together.

Single Entity Filters

Single entity filters are always applied to the target entities, irrespective of the properties of the source entity.

Custom Property Comparison

The custom_property filter is one of the base building blocks for filtering in Skill Engine API. It filters the target entities using a value you provide inside the filter itself, and supports equality as well as a range of greater than / less than varieties. To know if you've applied the filter in the right direction, it's good to phrase it as: "I want to receive all entities that have a property_name that is operator to/than property_value". For example, the filter below results in all entities that have a wage Custom Property above 3000.

{
    "filter": "custom_property",
    "property_name": "wage",
    "property_value": "3000",
    "operator": "gt"
}

When looking for matching vacancies, you can use the prefix company__ before the actual property name to apply the filter on the Custom Properties of the external company linked to the Vacancy, rather than on the Custom Properties of the Vacancies itself. For example if you only want the Vacancies linked to external Companies that allow telework, the filter would like this:

{
    "filter": "custom_property",
    "property_name": "company__telework_policy",
    "property_value": "allowed"
}

When looking for matching external companies, the prefix vacancy__ can be used before the actual value of property_name to apply the filtering to the Custom Properties associated to the Vacancies linked to the external Companies instead the external Companies itself.

Custom Property Contains Element

The custom_property_contains_element can be applied to list[text] type Custom Properties, and selects those entities for which the Custom Property value contains the supplied property_value. For example, the filter below could be used in a situation where Employees indicate the industries they want to work in -- in that case, the filter selects only the Employees that want to work in electronics.

{
    "filter": "custom_property_contains_element",
    "property_name": "industries",
    "property_value": "electronics"
}

If you want to require the Custom Property value to contain multiple different elements, you can simply append more filters, which will create the desired effect. If you want to filter for entities containing one or more of multiple elements, you can supply a list of options instead of just one value. To update our example from above, the filter below selects Employees that want to work in electronics, chemicals or both.

{
    "filter": "custom_property_contains_element",
    "property_name": "industries",
    "property_value": ["electronics", "chemicals"]
}

When looking for matching vacancies, you can use the prefix company__ before the actual property name to apply the filter on the Custom Properties of the external company linked to the Vacancy, rather than on the Custom Properties of the Vacancies itself. For the example above this would become company__industries .

When looking for matching external companies, the prefix vacancy__ can be used before the actual value of property_name to apply the filtering to the Custom Properties associated to the Vacancies linked to the external Companies instead the external Companies itself.

Custom Property Is In List

In similar fashion to the contains element filter, the custom_property_is_in_list filter selects entities for which (non-list) Custom Property property_name is contained in the passed list of possible_values. For example, if you're looking for an Employee that wants to work either full time or part time, you might submit a filter similar to the one below:

{
    "filter": "custom_property_is_in_list",
    "property_name": "possible_work_regimes",
    "possible_values": ["fulltime", "parttime"]
}

When looking for matching vacancies, you can use the prefix company__ before the actual property name to apply the filter on the Custom Properties of the external company linked to the Vacancy, rather than on the Custom Properties of the Vacancies itself. For the example above this would become company__possible_work_regimes.

When looking for matching external companies, the prefix vacancy__ can be used before the actual value of property_name to apply the filtering to the Custom Properties associated to the Vacancies linked to the external Companies instead the external Companies itself.

External ID is in List

This filter allows explicit filtering on external IDs of the target entities. Any entity not mentioned in the list is excluded.

{
    "filter": "external_id_is_in_list",
    "external_ids": ["external_id_1", "external_id_2", "external_id_3"]
}

Entity Relation Filters

Entity relation filters filter the target entities using some relation they may or may not have with the source entity.

Geo Distance

This rather simple filter allows you to filter the target entities based on their distance from the source entity. The distance is expressed in kilometers, and calculated in a straight line between the two points. If the source entity has no location set, this filter will not have any effect. If the source entity does have a location, then target entities without a location will not be considered. If no geo distance filter is provided, Employee/Vacancy matching defaults to a range of 50km.

{
    "filter": "max_geo_distance",
    "max_geo_distance": 50
}

Language

The language filter allows you to determine how language requirements are handled when matching between Employees and Vacancies. As each language indicated on either of these entity types also has a level, you can tune the strictness of this filter by modifying max_underqualification and max_overqualification. These respective values indicate how many levels below or above the languages in the source entity those in the target entities are allowed to be. Checking is only done for languages present in the source entity, so in case of an empty languages attribute on the source side, this filter will not have any effect. If max_underqualification is equal or greater than the level of one or more languages for the source entity, target entities that do not mention this language will also be considered valid combinations with it.

{
    "filter": "language",
    "max_overqualification": 2,
    "max_underqualification": 1
}

Custom Property Equal

The custom_property_equal filter simply checks for equality between properties on the source and target entities. By providing the name of the property to be used on the source side as from_entity_property and the one on the target side as to_entity_property, you can flexibly choose which Custom Properties to use.

{
    "filter": "custom_property_equal",
    "from_entity_property": "employment_type",
    "to_entity_property": "employment_type"
}

When the filtering is applied to vacancies, either as from_entity or as to_entity, you can use the prefix company__ before the actual value of from_entity_property or to_entity_property to apply the filtering on the Custom Properties of the external company linked to the Vacancy rather than the Vacancy itself.

When the filtering is applied to external Companies as to_entity, the prefix vacancy__ can be used before the actual value of to_entity_property to apply the filtering to the Custom Properties associated to the Vacancies linked to the external Companies instead the external Companies itself.

Custom Property Contains

The custom_property_contains filter is very similar to the custom_property_equal filter, but instead works with a list[text] and text property, checking whether one contains the other. Specifically, this filter selects the target entities for which the value of to_entity_property is a part of the from_entity_property (which must be a list type) of the source entity. The example below reflects the scenario where an Employee might indicate in which countries they want to work, so that only Vacancies in one of these countries can be returned. If the Custom Property is not set for the source entity, the filter has no effect. If the target entities lack the to_entity_property, they are ignored.

{
    "filter": "custom_property_contains",
    "from_entity_property": "allowed_countries",
    "to_entity_property": "country"
}

When the filtering is applied to vacancies, either as from_entity or as to_entity, you can use the prefix company__ before the actual value of from_entity_property or to_entity_property to apply the filtering on the Custom Properties of the external company linked to the Vacancy rather than the Vacancy itself.

When the filtering is applied to external Companies as to_entity, the prefix vacancy__ can be used before the actual value of to_entity_property to apply the filtering to the Custom Properties associated to the Vacancies linked to the external Companies instead the external Companies itself.

Custom Property Is In

The custom_property_is_in filter is the mirror image of the custom_property_contains filter. If you apply one type in fetching Vacancies for a given Employee, then you can transform it into the other to have the equivalent constraint while fetching Employees for a given Vacancy. The example below reflects the transformed version of the example given for the contains filter above.

{
    "filter": "custom_property_is_in",
    "from_entity_property": "country",
    "to_entity_property": "allowed_countries"
}

When the filtering is applied to vacancies, either as from_entity or as to_entity, you can use the prefix company__ before the actual value of from_entity_property or to_entity_property to apply the filtering on the Custom Properties of the external company linked to the Vacancy rather than the Vacancy itself.

When the filtering is applied to external Companies as to_entity, the prefix vacancy__ can be used before the actual value of to_entity_property to apply the filtering to the Custom Properties associated to the Vacancies linked to the external Companies instead of the external Companies themselves.

Custom Property List Overlap

The custom_property_list_overlap filter checks for overlap between two list[text] Custom Properties. Specifically, this filter selects the target entities for which at least one of the values in to_entity_property (which must be a list type) is contained in from_entity_property of the source entity. The example below shows a scenario in which an Employee might indicate in which industries they want to be involved, such that only Vacancies that are linked to one of these industries will be returned. If the Custom Property is not set for the source entity, the filter has no effect. Target entities that lack the to_entity_property property are excluded.

{
    "filter": "custom_property_list_overlap",
    "from_entity_property": "desired_industries",
    "to_entity_property": "industries"
}

When the filtering is applied to Vacancies, either as from_entity or as to_entity, you can use the prefix company__ before the actual value of from_entity_property or to_entity_property to apply the filtering on the Custom Properties of the External Company linked to the Vacancy rather than the Vacancy itself.

When the filtering is applied to External Companies as to_entity, the prefix vacancy__ can be used before the actual value of to_entity_property to apply the filtering to the Custom Properties associated to the Vacancies linked to the External Companies instead the External Companies themselves.

Last Updated

The last_updated filter allows you to filter the target entities based on last_updated property. The filter supports a range of greater than / less than varieties.

{
    "filter": "last_updated",
    "operator": "gt, gte, lt, lte",
    "value": "datetime"
}

Last Updated With Taxonomy Change

The last_updated_with_taxonomy_change filter checks if a Taxonomy change took place within the constraints of the filter. If that it the case, all target entities are returned, as all can be affected by a Taxonomy change. If no Taxonomy change took place, the filter operates like a last_updated filter.

{
    "filter": "last_updated_with_taxonomy_change",
    "operator": "gt, gte, lt, lte",
    "value": "datetime"
}

Employees

Export data from the API through pagination. Request the first page of an export by not specifying the starting_after field. Next pages can be requested by setting the starting_after field to the last external_id from the previous page. When there is no more data after the requested page, has_next will be false.

Export Employee Skill Clusters data.

Export all Skill Clusters of all Employees by paginating through the data.
The Employees are returned based on their creation time, with those created first being returned first.

Request
Security:
application (read)
Request Body schema: application/json
limit
required
integer [ 1 .. 100 ]

The number of Employees to show on a single page.

starting_after
string <= 100 characters

The external_id of the Employee to continue looking from.

Array of is_active (object) or last_updated (object)

A set of filters to apply on the exported Employees.

include
Array of strings

Expand the results with extra data.

Items Enum: "current_skills" "related_skills" "rejected_skills" "sources"
Responses
200OK
400Bad request
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
post/export/employees/skill_clusters
Request samples
application/json
{
  • "limit": 10,
  • "starting_after": "4cbdbabe-5644-4423-8157-520f8a2f429a",
  • "filters": [
    ],
  • "include": [
    ]
}
Response samples
application/json
{
  • "has_next": true,
  • "records": [
    ],
  • "next_starting_after": "61a6e076-d780-11ec-9d64-0242ac120002"
}

Export Employee Skill Profile data

Export all Skill Profiles of all Employees by paginating through the data.
The Employees are returned based on their creation time, with those created first being returned first.

Request
Security:
application (read)
Request Body schema: application/json
limit
required
integer [ 1 .. 100 ]

The number of Employees shown on a single page.

starting_after
string <= 100 characters

The external_id of the Employee to continue looking from.

Array of is_active (object) or last_updated (object)

A set of filters to apply on the exported Employees.

include
Array of strings

Expand the results with extra data.

Items Enum: "skill_validation_state" "sources" "rejected_skills" "low_data_availability_flag"
output_skills_sorting
string
Default: "alphabetical"

Sort the Skills in the results alphabetically or by decreasing confidence.

Enum: "alphabetical" "confidence"
Responses
200OK
400Bad request
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
post/export/employees/skill_profiles
Request samples
application/json
{
  • "limit": 10,
  • "starting_after": "4cbdbabe-5644-4423-8157-520f8a2f429a",
  • "filters": [
    ],
  • "include": [
    ],
  • "output_skills_sorting": "alphabetical"
}
Response samples
application/json
{
  • "has_next": true,
  • "records": [
    ],
  • "next_starting_after": "5cbdbdbe-5f44-4423-8157-520f8a2f429a"
}

Job Architecture

Export Job Architecture hierarchy

Export the Job Architecture as a hierarchical structure. Job Families are grouped by their job_family_group_name and consist of multiple Jobs. Jobs that are not part of a Job Family, appear in a nameless Job Family entity.

Request
Security:
application (read)
query Parameters
is_active
boolean
Default: "None"

This parameter can be used to only include entities with the active attribute set to true or false. If the parameter is not set, all entities will be included.

Example: is_active=true
skill_id
string <uuid> [ 1 .. 100 ] characters

The unique ID of a Skill, consisting of alphanumeric characters and hyphens. Setting this parameter will include only Job Families and Job Family Groups with Jobs that have this Skill in their Skill Profile.

Example: skill_id=a3903505-eb84-42dc-a79f-5e7b1fe897b7
include
Array of strings
Default: []

When set to low_data_availability_flag, the response will include information about the total number of Jobs with low data availability within each Job Family or Job Family Group. For Jobs, this field is equal to 1 or 0 depending on whether the Job has low data availability.

Items Value: "low_data_availability_flag"
Example: include=low_data_availability_flag
Responses
200OK
400Bad request
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
get/job_architecture/export
Response samples
application/json
{
  • "job_family_groups": [
    ]
}

Export Job Skill Clusters data.

Export all Skill Clusters for all Jobs by paginating through the data.
The Jobs are returned based on their creation time, with those created first being returned first.

Request
Security:
application (read)
Request Body schema: application/json
limit
required
integer [ 1 .. 100 ]

The number of Jobs to show on a single page.

starting_after
string <= 100 characters

The external_id of the Job to continue looking from.

Array of is_active (object) or last_updated (object)

A set of filters to apply on the exported Jobs.

include
Array of strings

Expand the results with extra data.

Items Value: "skills"
Responses
200OK
400Bad request
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
post/job_architecture/export/jobs/skill_clusters
Request samples
application/json
{
  • "limit": 10,
  • "starting_after": "4cbdbabe-5644-4423-8157-520f8a2f429a",
  • "filters": [
    ],
  • "include": [
    ]
}
Response samples
application/json
{
  • "has_next": true,
  • "records": [
    ],
  • "next_starting_after": "61a6e076-d780-11ec-9d64-0242ac120002"
}

Export Job Skill Profiles.

Export all Skill Profiles of all Jobs by paginating through the data.
The Jobs are returned based on their creation time, with those created first being returned first.

Request
Security:
application (read)
query Parameters
domain_namespace
string
Default: "techwolf"

The Domain namespace determines the Domains the Skills will be mapped to. Using techwolf will map them to the default TechWolf domains. Using taxonomy will map them to the custom Domains defined in your Taxonomy. Using adaptive will map the Skills to the Domains in the custom Taxonomy if there is one present, otherwise it will fall back to the default Techwolf Domains.

Enum: "techwolf" "taxonomy" "adaptive"
Example: domain_namespace=taxonomy
response_format
string
Default: "list"

Defines the format of the returned Skill Profile.

Enum: Description
list

The response format lists the Skills in the Skill Profile. This is the default format.

hierarchy

The response format formats the skills in a hierarchical structure. When a Taxonomy is availabe it contains Domains, Skill Clusters and Skills. If it is a 4-level Taxonomy, there is a Subdomain layer between Domains and Skill Clusters. If no Taxonomy is available, the Skills are grouped under their default Techwolf Domain.

Example: response_format=list
Request Body schema: application/json
limit
required
integer [ 1 .. 100 ]

The number of Jobs to show on a single page.

starting_after
string <= 100 characters

The external_id of the Job to continue looking from.

Array of is_active (object) or last_updated (object) or job_family_id_is_in_list (object)

A set of filters used to apply on the exported Job Skill Profiles.

include
Array of strings

Expand the results with additional data. The proficiency_level and critical options are only possible when response_format=list or when no response_format is given.

Items Enum: "low_data_availability_flag" "skill_validation_state" "proficiency_level" "critical"
output_skills_sorting
string
Default: "alphabetical"

Sort the Skills in the results alphabetically or by decreasing confidence.

Enum: "alphabetical" "confidence"
Responses
200OK
400Bad request
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
post/job_architecture/export/jobs/skill_profiles
Request samples
application/json
{
  • "limit": 10,
  • "starting_after": "4cbdbabe-5644-4423-8157-520f8a2f429a",
  • "filters": [
    ],
  • "include": [
    ],
  • "output_skills_sorting": "alphabetical"
}
Response samples
application/json
{
  • "has_next": true,
  • "records": [
    ],
  • "next_starting_after": "61a6e076-d780-11ec-9d64-0242ac120002"
}

Export Job Suggested Skill Profiles.

Export all suggested Skill Profiles of all Jobs by paginating through the data.
The Jobs are returned based on their creation time, with those created first being returned first.

Request
Security:
application (read)
query Parameters
domain_namespace
string
Default: "techwolf"

The Domain namespace determines the Domains the Skills will be mapped to. Using techwolf will map them to the default TechWolf domains. Using taxonomy will map them to the custom Domains defined in your Taxonomy. Using adaptive will map the Skills to the Domains in the custom Taxonomy if there is one present, otherwise it will fall back to the default Techwolf Domains.

Enum: "techwolf" "taxonomy" "adaptive"
Example: domain_namespace=taxonomy
response_format
string
Default: "list"

Defines the format of the returned Skill Profile.

Enum: Description
list

The response format lists the Skills in the Skill Profile. This is the default format.

hierarchy

The response format formats the skills in a hierarchical structure. When a Taxonomy is availabe it contains Domains, Skill Clusters and Skills. If it is a 4-level Taxonomy, there is a Subdomain layer between Domains and Skill Clusters. If no Taxonomy is available, the Skills are grouped under their default Techwolf Domain.

Example: response_format=list
Request Body schema: application/json
limit
required
integer [ 1 .. 100 ]

The number of Jobs to show on a single page.

starting_after
string <= 100 characters

The external_id of the Job to continue looking from.

Array of is_active (object) or last_updated (object) or job_family_id_is_in_list (object)

A set of filters used to apply on the exported Job suggested Skill Profiles.

include
Array of strings

Expand the results with additional data

Items Value: "skill_validation_state"
output_skills_sorting
string
Default: "alphabetical"

Sort the Skills in the results alphabetically or by decreasing confidence.

Enum: "alphabetical" "confidence"
Responses
200OK
400Bad request
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
post/job_architecture/export/jobs/suggested_skill_profiles
Request samples
application/json
{
  • "limit": 10,
  • "starting_after": "4cbdbabe-5644-4423-8157-520f8a2f429a",
  • "filters": [
    ],
  • "include": [
    ],
  • "output_skills_sorting": "alphabetical"
}
Response samples
application/json
{
  • "has_next": true,
  • "records": [
    ],
  • "next_starting_after": "61a6e076-d780-11ec-9d64-0242ac120002"
}

Export Job external market Skill Profiles.

Export all external market Skill Profiles of all Jobs by paginating through the data.
The Jobs are returned based on their creation time, with those created first being returned first.

Request
Security:
application (read)
query Parameters
response_format
string
Default: "list"

Defines the format of the returned Skill Profile.

Enum: Description
list

The response format lists the Skills in the Skill Profile. This is the default format.

hierarchy

The response format formats the skills in a hierarchical structure. When a Taxonomy is availabe it contains Domains, Skill Clusters and Skills. If it is a 4-level Taxonomy, there is a Subdomain layer between Domains and Skill Clusters. If no Taxonomy is available, the Skills are grouped under their default Techwolf Domain.

Example: response_format=list
Request Body schema: application/json
limit
required
integer [ 1 .. 100 ]

The number of Jobs to show on a single page.

starting_after
string <= 100 characters

The external_id of the Job to continue looking from.

Array of is_active (object) or last_updated (object) or job_family_id_is_in_list (object)

A set of filters used to apply on the exported Job Skill Profiles.

output_skills_sorting
string
Default: "alphabetical"

Sort the Skills in the results alphabetically or by decreasing confidence.

Enum: "alphabetical" "confidence"
Responses
200OK
400Bad request
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
post/job_architecture/export/jobs/market_skill_profiles
Request samples
application/json
{
  • "limit": 10,
  • "starting_after": "4cbdbabe-5644-4423-8157-520f8a2f429a",
  • "filters": [
    ],
  • "output_skills_sorting": "alphabetical"
}
Response samples
application/json
{
  • "has_next": true,
  • "records": [
    ],
  • "next_starting_after": "61a6e076-d780-11ec-9d64-0242ac120002"
}

Export Job Family Skill Profiles.

Export all Skill Profiles of all Job Families by paginating through the data.
The Job Families are returned based on their creation time, with those created first being returned first.

Request
Security:
application (read)
query Parameters
domain_namespace
string
Default: "techwolf"

The Domain namespace determines the Domains the Skills will be mapped to. Using techwolf will map them to the default TechWolf domains. Using taxonomy will map them to the custom Domains defined in your Taxonomy. Using adaptive will map the Skills to the Domains in the custom Taxonomy if there is one present, otherwise it will fall back to the default Techwolf Domains.

Enum: "techwolf" "taxonomy" "adaptive"
Example: domain_namespace=taxonomy
response_format
string
Default: "list"

Defines the format of the returned Skill Profile.

Enum: Description
list

The response format lists the Skills in the Skill Profile. This is the default format.

hierarchy

The response format formats the skills in a hierarchical structure. When a Taxonomy is availabe it contains Domains, Skill Clusters and Skills. If it is a 4-level Taxonomy, there is a Subdomain layer between Domains and Skill Clusters. If no Taxonomy is available, the Skills are grouped under their default Techwolf Domain.

Example: response_format=list
Request Body schema: application/json
limit
required
integer [ 1 .. 100 ]

The number of Job Families to show on a single page.

starting_after
string <= 100 characters

The external_id of the Job Family to continue looking from.

Array of is_active (object) or last_updated (object)

A set of filters used to apply on the exported Job Family Skill Profiles.

include
Array of strings

Expand the results with additional data. The proficiency_level and critical options are only possible when response_format=list or when no response_format is given.

Items Enum: "skill_validation_state" "proficiency_level" "critical"
output_skills_sorting
string
Default: "alphabetical"

Sort the Skills in the results alphabetically or by decreasing confidence.

Enum: "alphabetical" "confidence"
Responses
200OK
400Bad request
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
post/job_architecture/export/job_families/skill_profiles
Request samples
application/json
{
  • "limit": 10,
  • "starting_after": "4cbdbabe-5644-4423-8157-520f8a2f429a",
  • "filters": [
    ],
  • "include": [
    ],
  • "output_skills_sorting": "alphabetical"
}
Response samples
application/json
{
  • "has_next": true,
  • "records": [
    ],
  • "next_starting_after": "61a6e076-d780-11ec-9d64-0242ac120002"
}

Export Job Family Suggested Skill Profiles.

Export all Suggested Skill Profiles of all Job Families by paginating through the data.
The Job Families are returned based on their creation time, with those created first being returned first.

Request
Security:
application (read)
query Parameters
domain_namespace
string
Default: "techwolf"

The Domain namespace determines the Domains the Skills will be mapped to. Using techwolf will map them to the default TechWolf domains. Using taxonomy will map them to the custom Domains defined in your Taxonomy. Using adaptive will map the Skills to the Domains in the custom Taxonomy if there is one present, otherwise it will fall back to the default Techwolf Domains.

Enum: "techwolf" "taxonomy" "adaptive"
Example: domain_namespace=taxonomy
response_format
string
Default: "list"

Defines the format of the returned Skill Profile.

Enum: Description
list

The response format lists the Skills in the Skill Profile. This is the default format.

hierarchy

The response format formats the skills in a hierarchical structure. When a Taxonomy is availabe it contains Domains, Skill Clusters and Skills. If it is a 4-level Taxonomy, there is a Subdomain layer between Domains and Skill Clusters. If no Taxonomy is available, the Skills are grouped under their default Techwolf Domain.

Example: response_format=list
Request Body schema: application/json
limit
required
integer [ 1 .. 100 ]

The number of Job Families to show on a single page.

starting_after
string <= 100 characters

The external_id of the Job Family to continue looking from.

Array of is_active (object) or last_updated (object)

A set of filters used to apply on the exported Job Family Suggested Skill Profiles.

include
Array of strings

Expand the results with additional data

Items Value: "skill_validation_state"
output_skills_sorting
string
Default: "alphabetical"

Sort the Skills in the results alphabetically or by decreasing confidence.

Enum: "alphabetical" "confidence"
Responses
200OK
400Bad request
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
post/job_architecture/export/job_families/suggested_skill_profiles
Request samples
application/json
{
  • "limit": 10,
  • "starting_after": "4cbdbabe-5644-4423-8157-520f8a2f429a",
  • "filters": [
    ],
  • "include": [
    ],
  • "output_skills_sorting": "alphabetical"
}
Response samples
application/json
{
  • "has_next": true,
  • "records": [
    ],
  • "next_starting_after": "61a6e076-d780-11ec-9d64-0242ac120002"
}

Courses

Export Course Skill Profiles.

Export all Skill Profiles of all Courses by paginating through the data.
The Courses are returned based on their creation time, with those created first being returned first.

Request
Security:
application (read)
Request Body schema: application/json
limit
required
integer [ 1 .. 100 ]

The number of Course Skill Profiles to show on a single page.

starting_after
string <= 100 characters

The external_id of the Course to continue looking from.

Array of is_active (object) or last_updated (object)

A set of filters used to apply on the exported Course Skill Profiles.

Responses
200OK
400Bad request
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
post/export/courses/skill_profiles
Request samples
application/json
{
  • "limit": 10,
  • "starting_after": "4cbdbabe-5644-4423-8157-520f8a2f429a",
  • "filters": [
    ]
}
Response samples
application/json
{
  • "has_next": true,
  • "records": [
    ],
  • "next_starting_after": "61a6e076-d780-11ec-9d64-0242ac120002"
}

Employees Assigned Position

Get the match scores between Employees and their assigned position in bulk.

Employees without an assigned position will be included in the result, with job_id=null and score=0.0.

Request
Security:
application (read)
query Parameters
response_format
string
Default: "simple"

If set to explained, the response will include an explanation of the match.

Enum: "simple" "explained"
Example: response_format=explained
Request Body schema: application/json
limit
required
integer [ 1 .. 100 ]

The number of Employees to show on a single page.

starting_after
string <= 100 characters

The external_id of the Employee to continue looking from.

Array of is_active (object) or last_updated (object)

A set of filters to apply on the Employees.

Responses
200OK
400Bad request
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
post/export/employees/match_assigned_position
Request samples
application/json
{
  • "limit": 10,
  • "starting_after": "4cbdbabe-5644-4423-8157-520f8a2f429a",
  • "filters": [
    ]
}
Response samples
application/json
{
  • "has_next": true,
  • "next_starting_after": "61a6e076-d780-11ec-9d64-0242ac120002",
  • "records": [
    ]
}

Taxonomy

Get Taxonomy export

Get an export of the entire Taxonomy.

Request
Security:
application (read)
query Parameters
include
Array of strings

Additional attributes that will be included in the response body. This query parameter can be added multiple times to include more attributes.

Items Enum: "skill_description" "skill_cluster_description"
Example: include=skill_description&include=skill_cluster_description
vocab_language
string
Default: "en_uk"

The display language used for Skill names. Altering the vocabulary language does not change the Skill Profile; it solely changes the way it is displayed. If not specified, the default language (en_uk) will be used. The en language is an alias for en_uk.

Enum: "en" "en_uk" "en_us" "de" "fr" "nl"
Example: vocab_language=en_uk
Responses
200OK
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
get/taxonomy/export
Response samples
application/json
{
  • "domains": [
    ]
}

Organisational Structure

Export Organisational Structure hierarchy

Export the Organisational Structure as a hierarchy. Each Organisational Unit can have at most one parent unit, with no limit on the number of levels.

Request
Security:
application (read)
query Parameters
skill_id
string <uuid> [ 1 .. 100 ] characters

The unique ID of a Skill, consisting of alphanumeric characters and hyphens. Setting this parameter will include only Organisational Units with Employees that have this Skill in their Skill Profile, and per Organisational Unit only count the number of Employees with this Skill.

Example: skill_id=a3903505-eb84-42dc-a79f-5e7b1fe897b7
include
Array of strings
Default: []

When set to low_data_availability_flag, the response will include information about the total number of Employees with low data availability within each Organisational Unit. For Employees, this field is equal to 1 or 0 depending on whether the Employee has low data availability.

Items Value: "low_data_availability_flag"
Example: include=low_data_availability_flag
Responses
200OK
400Bad request
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
get/organisational_units/export
Response samples
application/json
{
  • "organisational_structure": [
    ]
}

General Reports

Reports aggregate and group Metrics into a broader overview.

More info about Reports can be found on the How it Works page .

Get entity counts

Beta

Retrieve the total number of all entities in the system.

Request
Security:
application (read)
Responses
200OK
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
get/reports/counts
Response samples
application/json
{
  • "report_name": "counts",
  • "report_data": {
    },
  • "last_update": "2020-09-01T11:45:49Z"
}

Get the Skill inventory report

Beta

Get your Skill inventory, the Skill Clusters of your entities, and where these originate from. This report generates a zip file containing the following files:

  • dim_{entity_type}.csv : A list of all entities in the system, containing external IDs and Custom Properties provided in entity_columns.
  • fact_{entity_type}_property.csv : A list of Custom Property mappings containing external IDs of the entity, Custom Property name and Custom Property value for all the Custom Properties provided in entity_properties.
  • dim_skill.csv : A list of all Skills referred to in the files above containing the external IDs, the name and the description.
  • dim_skill_cluster.csv : A list of all Skill Clusters in the system, containing the name, the Domain name and their Skills.
  • fact_{entity_type}_skill_cluster.csv : A list of the validation state and proficiency level for each combination of Employee and Skill Cluster.
  • fact_skill_cluster.csv : A list of all Skills in each Skill Cluster, containing the Skill Cluster external IDs and Skill external IDs.
  • fact_skill_source.csv : A list containing the source of each Skill of an Employee.
Request
Security:
application (read)
Request Body schema: application/json

Filters for the Skill inventory report.

entity_type
required
string non-empty

Name of the entity type for which the report will be generated.

Value: "Employee"
required
Array of objects (DimColumn)

The Custom Property columns that will be included in the dim_{entity}.csv file. This can be an empty list.

required
Array of objects (FactProperty)

The Custom Properties that will be included in the fact_{entity}_properties.csv file. This can be an empty list.

Responses
200OK.
202Accepted: calculation started or in progress. Polling this endpoint again with a 200 response results in the data.
400Bad request
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
post/reports/skill_inventory
Request samples
application/json
{
  • "entity_type": "employee",
  • "entity_columns": [
    ],
  • "entity_properties": [
    ]
}
Response samples
application/json
[
  • {
    }
]

Get the internal talent mobility report.

Beta

This report generates a zip file containing the following files:

  • dim_employee.csv : A list of all Employees in the system, containing their external IDs and Custom Properties provided in employee_columns.
  • fact_employee_property.csv : A list of Custom Property mappings containing external IDs of the Employee, Custom Property name and Custom Property value for all the Custom Properties provided in employee_properties.
  • dim_vacancy.csv : A list of all Vacancies in the system, containing external IDs and Custom Properties provided in vacancy_columns.
  • fact_vacancy_property.csv : A list of Custom Property mappings containing external IDs of the Vacancy, Custom Property name and Custom Property value for all Custom Properties provided in vacancy_properties.
  • fact_vacancy_skill.csv : Contains a list of all Vacancy external ID-Skill pairs.
  • fact_match_skill.csv : Contains the match score for every Skill for all Employee-Vacancy pairs.
  • dim_skill.csv : A list of all Skills referred to in the files above containing the external IDs, the name and the description.
  • fact_match.csv : Contains the match score of all Employee-Vacancy pairs.
Request
Security:
application (read)
Request Body schema: application/json

Filters for the Skill inventory report.

max_employees_per_vacancy
required
number [ 1 .. 100 ]

The max number of Employees that will be matched for each Vacancy.

Array of objects (DimColumn)

The Custom Property columns that will be included in the dim_employee.csv file.

Array of objects (FactProperty)

The Custom Properties that will be included in the fact_employee_properties.csv file.

Array of objects (DimColumn)

The Custom Property columns that will be included in the dim_vacancy.csv file.

Array of objects (FactProperty)

The Custom Properties that will be included in the fact_vacancy_property.csv file.

Responses
200OK.
202Accepted: calculation started or in progress. Polling this endpoint again with a 200 response results in the data.
400Bad request
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
post/reports/internal_talent_mobility
Request samples
application/json
{
  • "max_employees_per_vacancy": 50,
  • "employee_columns": [
    ],
  • "employee_properties": [
    ],
  • "vacancy_columns": [
    ],
  • "vacancy_properties": [
    ]
}
Response samples
application/json
[
  • {
    }
]

Get the Job Architecture benchmark report

Beta

Get your Job Architecture Benchmark containing the Jobs and how they compare to the ones in their peer groups. This report generates a zip file containing the following files:

  • dim_peer_group.csv: A list of all Jobs in the system, containing external IDs and the ID of the peer group.
  • fact_peer_group_property.csv: Currently unused.
  • dim_job.csv: A list of all Jobs present in the system, containing their external IDs, Job titles and Custom Properties provided in job_columns.
  • fact_job_property.csv: A list of Custom Property mappings containing external IDs of the Job, Custom Property name and Custom Property value for all Custom Properties provided in job_properties.
  • dim_skill.csv: A list of all Skills referred to in the files above containing the external IDs, the name and the description.
  • fact_match_skill.csv: Contains the match score for every Skill for all peer group - Job pairs.
  • fact_match.csv: Contains the match score of all peer group - Job pairs.
Request
Security:
application (read)
Request Body schema: application/json

Options for the Job Architecture benchmark report.

job_columns
required
Array of any

The Custom Property columns that will be included in the dim_job.csv file.

Array of objects (FactProperty)

The Custom Properties that will be included in the fact_job_property.csv file.

Array of objects (DimColumn)

The Custom Property columns that will be included in the dim_peer_group.csv file. Currently has no effect!

Array of objects (FactProperty)

The Custom Properties that will be included in the fact_peer_group_property.csv file. Currently has no effect!

Responses
200OK.
202Accepted: calculation started or in progress. Polling this endpoint again with a 200 response results in the data.
400Bad request
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
post/reports/job_architecture_benchmark
Request samples
application/json
{
  • "job_columns": [
    ],
  • "job_properties": [
    ],
  • "peer_group_columns": [
    ],
  • "peer_group_properties": [
    ]
}
Response samples
application/json
[
  • {
    }
]

Employee Reports

Reports aggregate and group Metrics into a broader overview.

More info about Reports can be found on the How it Works page .

Get the Skill Cluster adoption report

Beta

Retrieve the Skill Cluster adoption report for all Employees with respect to the value of a Custom Property and one or more Skill Clusters.

The report consists of three smaller reports. A heatmap, a Skill Cluster adoption report, and a Skill breakdown.

  • The heatmap returns the adoption of each requested Skill Cluster for all Employees which have the same Custom Property.
  • The Skill Cluster adoption gives the proficiency level per requested Skill Cluster for each Employee.
  • The Skill breakdown returns an overview of the Skills of the requested Skill Cluster for each Employee.
Request
Security:
application (read_reports)
query Parameters
file_format
string
Default: "json"

The output format in which the report will be returned. When csv is chosen, a ZIP file is returned containing the three reports in csv format.

Enum: "json" "csv"
Request Body schema: application/json

Filters for the Skill Cluster adoption report

group_by_custom_property
required
string

Group the output by this property.

relevant_skill_clusters
required
Array of strings

List of Skill Clusters used for the Skill Cluster adoption report.

Responses
200OK
202Accepted: calculation started or in progress. Polling this endpoint again with a 200 response results in the data.
400Bad request
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
post/reports/employees/skill_cluster_adoption
Request samples
application/json
{
  • "group_by_custom_property": "Department",
  • "relevant_skill_clusters": [
    ]
}
Response samples
application/json
{
  • "report_name": "employee_skill_cluster_adoption",
  • "report_data": {
    },
  • "last_update": "2020-09-01T11:45:49Z"
}

Get Employees key metrics

Beta

Retrieve all key metrics of all Employees

Request
Security:
application (read_reports)
Responses
200OK
202Accepted: calculation started or in progress. Polling this endpoint again with a 200 response results in the data.
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
get/reports/employees/key_metrics
Response samples
application/json
{
  • "report_name": "employees_key_metrics",
  • "report_data": {
    },
  • "last_update": "2020-09-01T11:45:49Z"
}

Job Reports

Reports aggregate and group Metrics into a broader overview.

More info about Reports can be found on the How it Works page .

Get Jobs key metrics

Beta

Retrieve all key metrics of all Jobs

Request
Security:
application (read_reports)
Responses
200OK
202Accepted: calculation started or in progress. Polling this endpoint again with a 200 response results in the data.
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
get/reports/jobs/key_metrics
Response samples
application/json
{
  • "report_name": "jobs_key_metrics",
  • "report_data": {
    },
  • "last_update": "2020-09-01T11:45:49Z"
}

Data Maturity Scan

Reports aggregate and group Metrics into a broader overview.

More info about Reports can be found on the How it Works page .

Get Employee Quality Matrix

Beta

Generate the Employee Quality Matrix for all Employees in the system.

Request
Security:
application (read_reports)
Responses
200OK
202Accepted: calculation started or in progress. Polling this endpoint again with a 200 response results in the data.
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
get/reports/data_maturity_scan/employee_quality_matrix
Response samples
application/json
{
  • "report_name": "employee_quality_matrix",
  • "report_data": {
    },
  • "last_update": "2020-09-01T11:45:49Z"
}

Get Job Quality Matrix

Beta

Generate the Job Quality Matrix for all Jobs in the system.

Request
Security:
application (read_reports)
Responses
200OK
202Accepted: calculation started or in progress. Polling this endpoint again with a 200 response results in the data.
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
get/reports/data_maturity_scan/job_quality_matrix
Response samples
application/json
{
  • "report_name": "job_quality_matrix",
  • "report_data": {
    },
  • "last_update": "2020-09-01T11:45:49Z"
}

Get Employee Maturity Overview

Beta

Generate the Employee Maturity Overview for all Employees in the system.

Request
Security:
application (read_reports)
query Parameters
limit
integer [ 1 .. 500 ]
Default: 200

The maximal number of returned entities.

Example: limit=250
offset
integer >= 0
Default: 0

The applied offset for returned entities, results starting from offset up to offset + limit.

update_low_data_availability
boolean
Default: true

If enabled, the low_data_availability flag on Employees will be updated according the results of the report.

Example: update_low_data_availability=true
Responses
200OK
202Accepted: calculation started or in progress. Polling this endpoint again with a 200 response results in the data.
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
get/reports/data_maturity_scan/employee_maturity_overview
Response samples
application/json
{
  • "report_name": "employee_data_maturity_overview",
  • "report_data": {
    },
  • "last_update": "2020-09-01T11:45:49Z"
}

Get Job Maturity Overview

Beta

Generate the Job Maturity Overview for all Jobs in the system.

Request
Security:
application (read_reports)
query Parameters
limit
integer [ 1 .. 500 ]
Default: 200

The maximal number of returned entities.

Example: limit=250
offset
integer >= 0
Default: 0

The applied offset for returned entities, results starting from offset up to offset + limit.

update_low_data_availability
boolean
Default: true

If enabled, the low_data_availability flag on Jobs will be updated according the results of the report.

Example: update_low_data_availability=true
Responses
200OK
202Accepted: calculation started or in progress. Polling this endpoint again with a 200 response results in the data.
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
get/reports/data_maturity_scan/job_maturity_overview
Response samples
application/json
{
  • "report_name": "job_data_maturity_overview",
  • "report_data": {
    },
  • "last_update": "2020-09-01T11:45:49Z"
}

Get Data Improvement Actions

Beta

Generate Data Improvement Actions for all Entities, Skill Events and Job Profile Data in the system.

Request
Security:
application (read_reports)
Responses
200OK
202Accepted: calculation started or in progress. Polling this endpoint again with a 200 response results in the data.
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
get/reports/data_maturity_scan/data_improvement_actions
Response samples
application/json
{
  • "report_name": "data_improvement_actions",
  • "report_data": {
    },
  • "last_update": "2020-09-01T11:45:49Z"
}

File Load Task

The File Load Task is an experimental feature that allows you to upload files to the API that are processed asynchronously. This is useful for large files that would otherwise take a long time to upload and process in a single request.

Create a File Load Task

Beta

Create a new File Load Task to load a CSV-file into the system. The file headers should contain all required columns that are needed for creating the specified entity types as a flat list. The file should be uploaded to a S3 bucket and the File Load Task should be created with the URI of the file in the S3 bucket. More info about the File Load Task can be found at the File Load Task Tutorial.

Request
Security:
application (read)
Request Body schema: application/json
entity_type
required
string

The type of entity to be loaded.

Value: "learning"
method
required
string

The method to be used to load the file.

Value: "s3_iam_user"
uri
required
string

The URI of the file to be loaded.

required
object

The credentials to access the file.

Responses
200OK
202Accepted: another calculation with the same `entity_type`, `uri` and `method` started or in progress.
400Bad request
401Unauthorized
403Forbidden
405Method Not Allowed
503Service Unavailable
post/integrations/file_load_task
Request samples
application/json
{
  • "entity_type": "learning",
  • "method": "s3_iam_user",
  • "uri": "s3://bucket-name/file-name.csv",
  • "credentials": {
    }
}
Response samples
application/json
{
  • "task_id": "01J8QBS1RS5MBEK9FW7J4MPJ1R"
}

Get a File Load Task.

Beta

Get the status of a File Load Task.

Request
Security:
application (read)
path Parameters
task_id
required
string

The unique ID of the File Load Task.

Responses
200OK
401Unauthorized
403Forbidden
404Not Found
405Method Not Allowed
503Service Unavailable
get/integrations/file_load_task/{task_id}
Response samples
application/json
{
  • "task_id": "01J8QBS1RS5MBEK9FW7J4MPJ1R",
  • "entity_type": "learning",
  • "method": "s3_iam_user",
  • "uri": "s3://bucket-name/file-name.csv",
  • "status": "in_progress",
  • "created_on": "2021-01-01T00:00:00Z",
  • "progress": {
    }
}

Version

Get API Version

Get the current version of the API for your tenant.

Request
Security:
application (read)
Responses
200OK
401Unauthorized
403Forbidden
405Method Not Allowed
get/version
Response samples
application/json
{
  • "version": "2021-01-19"
}