> ## Documentation Index
> Fetch the complete documentation index at: https://developers.techwolf.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Compatible Changes

The list below gives a sorted overview of non-breaking changes to the
SkillEngine API. These changes are immediately available to you and will be
supported by your API, regardless of your version.

### August 2026

* Raised the maximum length of `ticket_description` on `ticket` Skill Events
  from 10 000 to 50 000 characters.
* Raised the maximum length of `description` on `merge_request` Skill Events
  from 5 000 to 250 000 characters, and of `commits[].message` from 500 to
  100 000 characters.
* Added the `skill_description` field to the `vocab_update_add_skill` operation
  of `GET /taxonomy/changes` and `POST /taxonomy/changes`.
* Added the `vocab_update_description` operation type to `GET /taxonomy/changes`
  and `POST /taxonomy/changes`, emitted when a Skill's description changes
  between vocabulary versions.

### July 2026

* Added `output_language` as an `include` value on `POST /export/skills` that
  returns, per Skill, the language its information was resolved from, so
  fallback resolutions can be told apart from genuine translations.
* Added `linked_jobs` as an `include` value on `POST /export/tasks` that
  expands each Task with the Jobs it is assigned to.
* Added the `external_vendor` query parameter to `POST /export/tasks` for the
  `linked_jobs` include.
* Added the `canonical_task_id_is_in_list` filter to `POST /export/tasks`.

### June 2026

* Added a top-level `unrecognized_skill_ids` array field to the
  `400 Bad Request` response of `PATCH /employees/{external_id}/skill_profile`
  when `feedback_format` is `external_vendor_skills` and one or more submitted
  Skill IDs are not recognised. All unrecognized IDs are returned in a single
  response so they can be removed and the request retried in one round trip.
  The field is purely additive; the `skills` feedback format response is
  unchanged.
* Added the `domain_id`, `subdomain_id`, `cluster_id`, and `canonical_task_id`
  fields to the task `hierarchy` block, giving each task-hierarchy level a
  stable id alongside its name. The ids are returned (nullable) wherever the
  hierarchy appears: `GET /tasks/{task_id}`, `GET /tasks/search`, the Employee
  and Job Task Profile endpoints (both `list` and `hierarchy` response
  formats), and the task exports (`POST /export/tasks`,
  `POST /export/employees/task_profiles`, and
  `POST /job_architecture/export/jobs/task_profiles`).
* Added the `response_format` query parameter to the Job Family task-based
  matching endpoints
  (`POST /job_architecture/job_families/{job_family_external_id}/matching_job_families_by_tasks`
  and
  `GET /job_architecture/job_families/{job_family_external_id}/job_families/{other_job_family_external_id}/task_match`).
* Added the `match_type` field to each entry in the `similar_tasks` array of the
  `POST /tasks/validate` response, indicating how the similar Task was found.
* Added `skill_source` as an `include` value on
  `GET /job_architecture/jobs/{job_external_id}/skill_profile`,
  `GET /employees/{external_id}/skill_profile`,
  `POST /job_architecture/export/jobs/skill_profiles`, and
  `POST /export/employees/skill_profiles`. When requested, each Skill in the
  response gains a `skill_source` field indicating whether the Skill is a
  custom Skill or originates from the TechWolf vocabulary.
* Added the `GET /tasks/{task_id}` endpoint that fetches a single Task by id.
* Added the `DELETE /tasks/{task_id}` endpoint that deletes a custom Task.
* Added the `POST /tasks` endpoint that creates a custom Task.
* Added the optional `source` body parameter to `POST /tasks` that records
  free-text attribution for a custom Task.
* Added the `POST /tasks/validate` endpoint that screens candidate Task names
  for quality and uniqueness.
* Added `task_source` and `enrichment_status` as `include[]` values on
  `GET /tasks/search` and `POST /export/tasks`, plus `ai_impact` and `hierarchy`
  on `GET /tasks/search`.
* Added the `response_format` query parameter to the task-based matching
  endpoints (`POST /job_architecture/jobs/{job_external_id}/matching_jobs_by_tasks`,
  `GET /job_architecture/jobs/{job_external_id}/jobs/{other_job_external_id}/task_match`,
  and `POST /tasks/matching`).

### May 2026

* Added a new `POST /tasks/matching` endpoint that returns the symmetric
  task-based match score between two caller-supplied task sets.
* Added a new `POST /job_architecture/jobs/{job_external_id}/matching_jobs_by_tasks`
  endpoint that returns the Jobs whose task profiles best match the given Job,
  ranked by task-match score.
* Added a new `GET /job_architecture/jobs/{job_external_id}/jobs/{other_job_external_id}/task_match`
  endpoint that returns the symmetric task-based match score between two Jobs.
* Added a new `POST /job_architecture/job_families/{job_family_external_id}/matching_job_families_by_tasks`
  endpoint that returns the Job Families whose task profiles best match the
  given Job Family, ranked by task-match score.
* Added a new `GET /job_architecture/job_families/{job_family_external_id}/job_families/{other_job_family_external_id}/task_match`
  endpoint that returns the symmetric task-based match score between two Job
  Families.
* Added the `normalized` query parameter to `POST /skills/lookup`. When set to
  `true`, the endpoint matches Skill names case-insensitively and
  diacritic-insensitively (Latin diacritics only), so inputs like `Café`,
  `café`, and `cafe` all resolve to the same Skill. Defaults to `false`
  (exact match).
* Added the `query` field to every entry in the response of
  `POST /skills/lookup`. It echoes the Skill name as provided in the request
  body. When `normalized=false`, `query` always equals `skill_name`. When
  `normalized=true` and the Skill is matched, `query` may differ from
  `skill_name` in casing or Latin diacritics. On a miss, `skill_name` falls
  back to the input value, so the field is always non-null.

### April 2026

* Added a new `GET /taxonomy/skills/languages` endpoint that returns the list of language codes
  available for Skills in the tenant's vocabulary. An optional `external_vendor` query parameter
  can be provided to retrieve languages for a specific vendor vocabulary.

* Extended the `vocab_language` query parameter to support 12 additional language codes
  **when scoped to the `workday` vendor** (via `external_vendor=workday`):
  `es` (Spanish), `fr_ca` (French Canadian), `it` (Italian), `ja` (Japanese), `ko` (Korean),
  `pt_br` (Brazilian Portuguese), `zh_cn` (Simplified Chinese), `zh_tw` (Traditional Chinese),
  `sv` (Swedish), `fi` (Finnish), `da` (Danish), and `no` (Norwegian).
  The default TechWolf vocabulary continues to support only `en`, `en_uk`, `en_us`, `de`,
  `fr`, and `nl`. Use the new `GET /taxonomy/skills/languages` endpoint to discover the
  exact set of languages available for a given vendor in your tenant.
  Additionally, IETF BCP 47 language tags (e.g. `fr-FR`, `zh-CN`, `nb-NO`) are now accepted
  and mapped to their internal equivalents. This applies to all endpoints that accept the
  `vocab_language` parameter.

### March 2026

* Added the `low_data_availability` filter to matching endpoints. When
  `exclude_low_data_availability` is set to `true`, entities with insufficient
  data for qualitative Skill inference are excluded from matching results. This
  filter is available on the following endpoints:
  * `POST /employees/{external_id}/matching_vacancies`
  * `POST /employees/{external_id}/matching_jobs`
  * `POST /vacancies/{external_id}/matching_employees`
  * `POST /job_architecture/jobs/{job_external_id}/matching_employees`
  * `POST /job_architecture/jobs/{job_external_id}/matching_source_jobs`
  * `POST /job_architecture/jobs/{job_external_id}/matching_target_jobs`
  * `POST /job_architecture/job_families/{job_family_external_id}/matching_employees`
  * `POST /companies/{external_id}/matching_employees`
  * `POST /employees/{external_id}/metrics/employability`
  * `POST /export/employees/matching_vacancies`
  * `POST /export/employees/matching_jobs`
  * `POST /export/vacancies/matching_employees`
  * `POST /job_architecture/export/jobs/matching_employees`
* Added the `active_only` query parameter to
  `GET /reports/data_maturity_scan/data_improvement_actions`. When set to `true`,
  only active Employees and Jobs are included in the Data Improvement Actions.
* Added the `category` query parameter to `POST /job_architecture/export/suggestions`
  and `POST /job_architecture/suggestions/interactions`. Set `category=tasks` to
  export or interact with task suggestions instead of the default skill suggestions.
* Added the `429 Too Many Requests` response to all API endpoints. The API now
  returns this status code when rate limits are exceeded.
* Added a new **Working History Dates** action generator to the Data Improvement Actions report
  (`GET /reports/data_maturity_scan/data_improvement_actions`). It identifies Working History
  Skill Events where a duration cannot be calculated due to missing `start_date`, missing
  `end_date`, or identical start and end dates. Examples are grouped by Employee.
* The `include=proficiency_level` parameter on Job and Job Family Skill Profile endpoints now
  returns `governed_proficiency_level` and `inferred_proficiency_level` fields (instead of
  `proficiency_level`). Similarly, `include=proficiency_float` returns `governed_proficiency_float`
  and `inferred_proficiency_float`, and `include=critical` returns `governed_critical` and
  `inferred_critical`. This applies to the following endpoints:
  * `GET /job_architecture/jobs/{job_external_id}/skill_profile`
  * `GET /job_architecture/job_families/{job_family_external_id}/skill_profile`
  * `POST /job_architecture/export/jobs/skill_profiles`
  * `POST /job_architecture/export/job_families/skill_profiles`
* The `validation_state` field is now always included on each Skill in the response of the
  above endpoints. The `include=skill_validation_state` parameter is no longer needed.
* Suggested Skills (with `validation_state: "suggested"`) are now returned alongside governed
  Skills in the Skill Profile response for the above endpoints.
* Added the `strict` query parameter to
  `POST /employees/{employee_external_id}/skill_events`. When `strict` is enabled,
  Skill Event creation will fail if the referenced Job has an empty Skill Profile.
* Added the `end_active_jobs` query parameter to
  `POST /employees/{employee_external_id}/skill_events`. When enabled, any currently
  active working history Skill Event (without an `end_date`) for the Employee will be
  ended automatically when the new Skill Event is created.

### February 2026

* Added the `include=business_relevant` query parameter to the `POST /export/skills`
  endpoint to include whether a Skill is marked as business relevant.
* Added the `output_skills_sorting` query parameter to `GET /employees/{external_id}/skill_profile` to sort Skills alphabetically or by decreasing confidence.
* The `output_skills_sorting` body parameter on `POST /export/employees/skill_profiles` now also works when an external vendor is specified.
* Added the `vocab_language` query parameter to the following matching endpoints
  to specify the display language for Skill names in the response:
  * `POST /employees/{external_id}/matching_vacancies`
  * `POST /employees/{external_id}/matching_jobs`
  * `POST /employees/{external_id}/matching_job_families`
  * `GET /employees/{employee_external_id}/match_assigned_position`
  * `GET /employees/{employee_external_id}/vacancies/{vacancy_external_id}/match`
  * `GET /employees/{employee_external_id}/jobs/{job_external_id}/match`
  * `GET /employees/{employee_external_id}/job_families/{job_family_external_id}/match`
  * `POST /vacancies/{external_id}/matching_employees`
  * `POST /job_architecture/jobs/{job_external_id}/matching_employees`
  * `GET /job_architecture/jobs/{job_external_id}/market_alignment`
  * `GET /job_architecture/jobs/{job_external_id}/market_skill_profiles`
  * `POST /job_architecture/jobs/{job_external_id}/matching_source_jobs`
  * `POST /job_architecture/jobs/{job_external_id}/matching_target_jobs`
  * `POST /job_architecture/job_families/{job_family_external_id}/matching_employees`
  * `POST /export/employees/match_assigned_position`
  * `POST /export/vacancies/matching_employees`
  * `POST /export/employees/matching_vacancies`
  * `POST /export/employees/matching_jobs`
  * `POST /job_architecture/export/jobs/matching_employees`
  * `POST /job_architecture/export/jobs/market_alignment`
  * `POST /job_architecture/export/job_families/suggested_skill_profiles`
  * `POST /job_architecture/export/suggestions`
  * `POST /employees/{employee_external_id}/recommended_courses`
  * `GET /employees/{employee_external_id}/vacancies/{vacancy_external_id}/recommended_courses`
  * `POST /employees/{employee_external_id}/vacancies/{vacancy_external_id}/recommended_courses`
  * `POST /employees/{employee_external_id}/jobs/{job_external_id}/recommended_courses`
  * `POST /skills/lookup`
  * `POST /export/employees/skill_profiles`
  * `POST /job_architecture/export/jobs/suggested_skill_profiles`
  * `GET /employees/{employee_external_id}/vacancies/{vacancy_external_id}/gap`
* Added the **Work Intelligence Task Profile** endpoints (experimental):
  * `GET /tasks/search` - Search for Tasks using a fuzzy text query with AI
    impact information
  * `GET /employees/{employee_external_id}/task_profile` - Retrieve an
    Employee's Task Profile with optional AI impact and source event
    information
  * `GET /job_architecture/jobs/{job_external_id}/task_profile` - Retrieve a
    Job's Task Profile with optional AI impact and source data information
  * `POST /export/employees/task_profiles` - Export Task Profiles for all
    Employees with pagination and filters
  * `POST /job_architecture/export/jobs/task_profiles` - Export Task Profiles
    for all Jobs with pagination and filters
  * `PATCH /employees/{employee_external_id}/task_profile` - Provide feedback
    on tasks in an Employee's Task Profile, setting each task's
    `validation_state` to `validated` or `rejected`
  * `PATCH /job_architecture/jobs/{job_external_id}/task_profile` - Provide
    feedback on tasks in a Job's Task Profile, setting each task's
    `validation_state` to `validated` or `rejected`
  * `POST /export/tasks` - Bulk export of Tasks.
* Added the `inferred_proficiency_level` field to the return of the
  `POST /employees/suggestions/skills` endpoint when `include=proficiency` is
  set as a query parameter
* Added the `include=inference_enabled` query parameter to indicate whether the
  Skill can be inferred, applicable to the following endpoints:
  * `GET /taxonomy/skills`
  * `GET /taxonomy/skills/{skill_id}`
  * `GET /taxonomy/export`
  * `POST /export/skills`

### January 2026

* Added the `vocab_language` query parameter to the following endpoints to
  specify the display language for Skill names in the response:
  * `POST /job_architecture/jobs/metrics/adoption_metrics`
  * `POST /job_architecture/export/job_families/skill_profiles`
  * `POST /job_architecture/export/jobs/skill_profiles`
  * `POST /job_architecture/export/jobs/market_skill_profiles`
  * `POST /employees/metrics/adoption_metrics`
* Added the `merge_request` Skill Event type for Employees. When creating or
  updating Skill Events via
  `POST /employees/{employee_external_id}/skill_events` or
  `PATCH /employees/{employee_external_id}/skill_events/{skill_event_external_id}`,
  the `event_type` can now be `merge_request` with content containing `title`,
  `description`, and `commits` (list of objects with `message`). Merge request
  events are processed asynchronously to infer skills from the title,
  description, and commit messages.
* Changed the `POST /taxonomy/skills` endpoint to require write\_skills scope
  access.
* Added the `DELETE /taxonomy/skills/{skill_id}` endpoint which allows for
  deleting custom Skills from the system. This endpoint requires write\_skills
  scope access.
* Added the `vocab_language` query parameter to the
  `PATCH /taxonomy/skills/{skill_id}` endpoint to support updating descriptions
  and names of Skills in different languages.
* Added the `skill_source` to the output of the following endpoints:
  * `GET /taxonomy/skills/{skill_id}`
  * `GET /taxonomy/skills`
  * `GET /taxonomy/export`
  * `POST /export/skills`
* Added the `default_skill_name` and `default_skill_description` to the output
  of the following endpoints:
  * `GET /taxonomy/skills/{skill_id}`
  * `GET /taxonomy/skills`
  * `GET /taxonomy/export`
* Added the `include=default_skill_name` and `include=default_skill_description`
  to the `POST /export/skills` endpoint to add the `default_skill_name` and
  `default_skill_description` to the output.
* Added the `filters` body parameter with the `skill_id_is_in_list` and
  `skill_source` filters to the `POST /export/skills` endpoint.
* Added pagination to the `POST /export/skills` endpoint using the `limit` and
  `starting_after` body parameters.
* Added the `external_vendor` query parameter to the `GET /taxonomy/changes`
  endpoint to support retrieving Taxonomy Changes in an external vendor's Skill
  vocabulary.
* Added the `create_skill` and `delete_skill` operation types to the
  `GET /taxonomy/changes` and `POST /taxonomy/apply` endpoints.
* Added the `POST /taxonomy/changes` endpoint.
* Added the `vocab_update_add_skill` operation type to the
  `GET /taxonomy/changes` and `POST /taxonomy/changes` endpoint.

### December 2025

* Added the `include_overqualified` and `min_critical_skills_match_ratio`
  parameters to the employee-job matching endpoints to filter matches based on
  their overqualification status and on the matching ratio of critical skills.
* Enhanced the employee-job matching and match endpoints
  (`POST /employees/{external_id}/matching_jobs`,
  `POST /job_architecture/jobs/{job_external_id}/matching_employees`,
  `POST /matching/export/employees/matching_jobs`,
  `POST /job_architecture/export/jobs/matching_employees`,
  `GET /employees/{employee_external_id}/match_assigned_position`,
  `GET /employees/{employee_external_id}/jobs/{job_external_id}/match`, and
  `POST /export/employees/match_assigned_position`) to automatically include
  additional fields when proficiency matching or criticality matching is enabled
  on the tenant. When proficiency matching is enabled, responses include
  `overqualified` status (for matching endpoints only), `skill_proficiency`, and
  `adjacent_skill_proficiency` fields. When criticality matching is enabled,
  responses include `critical` and `gap_impact` fields.
* Added the `include` query parameter to the
  `GET /reports/data_maturity_scan/job_maturity_overview` and
  `GET /reports/data_maturity_scan/employee_maturity_overview` endpoints to
  include additional metrics in the response.
  * For Jobs: `job_data_count` and `data_distribution`.
  * For Employees: `valid_assigned_position`, `has_business_data`, and
    `sufficient_working_history`.
* Removed `MIN_SOURCE_CONFIRMATION` from the list of possible reasons in the
  Data Maturity Scan maturity overview endpoints.
* Added the `is_active` query parameter to the
  `GET /reports/data_maturity_scan/job_maturity_overview` and
  `GET /reports/data_maturity_scan/employee_maturity_overview` endpoints to
  filter entities by their active status.
* Removed the `force_recalculate` parameter from the
  `GET /reports/data_maturity_scan/job_maturity_overview` and
  `GET /reports/data_maturity_scan/employee_maturity_overview` endpoints as the
  underlying data is now updated continuously.

### November 2025

* Added the `low_data_availability` query paremeter to the `GET /employees`
  endpoint.
* Added the `low_data_availability` and `job_family` query parameters to the
  `GET /job_architecture/jobs` endpoint.
* Added the `job_count` to the output of the `GET /job_architecture/export`
  endpoint.

### October 2025

* Added the `external_vendor` query parameter to the
  `PUT /taxonomy/skill_clusters/{skill_cluster_external_id}/skills/{skill_id}`
  and
  `DELETE /taxonomy/skill_clusters/{skill_cluster_external_id}/skills/{skill_id}`
  endpoints to support applying Taxonomy Changes in an external vendor's Skill
  vocabulary.
* Added the `external_vendor` query parameter to the
  `GET /taxonomy/skill_clusters/{skill_cluster_external_id}/skills`,
  `GET /taxonomy/export` and `GET /taxonomy/skills` endpoints to display Skills
  in an external vendor's Skill vocabulary.
* Added the `include=properties` query parameter to the following endpoints to
  show properties of each Skill:
  * `GET /taxonomy/skill_clusters/{skill_cluster_external_id}/skills` (List
    skills in a skill cluster)
  * `GET /taxonomy/skills` (List all skills)
  * `POST /export/skills` (Export all skills)
  * `GET /taxonomy/export` (Taxonomy export)
  * `GET /taxonomy/skills/{skill_id}` (Get Skill endpoint)
  * `GET /employees/{external_id}/skill_profile` (Get Employee Skill profile)
  * `GET /job_architecture/job_families/{job_family_external_id}/skill_profile`
    (Get Skill Profile Job Family)
  * `GET /job_architecture/job_families/{job_family_external_id}/suggested_skill_profile`
    (Get suggested skill profile Job Family)
  * `GET /job_architecture/jobs/{job_external_id}/skill_profile` (Get Skill
    Profile Job)
  * `GET /job_architecture/jobs/{job_external_id}/suggested_skill_profile`
    (Get suggested skill profile Job)
  * `GET /job_architecture/jobs/{job_external_id}/market_skill_profiles` (Get
    external market profiles for Job)
  * `POST /export/employees/skill_profiles` (Export Employee Skill Profile)
  * `POST /job_architecture/export/jobs/skill_profiles` (Export Job Skill
    Profile)
  * `POST /job_architecture/export/jobs/suggested_skill_profiles` (Export
    Suggested Job Skill Profile)
  * `POST /job_architecture/export/jobs/market_skill_profiles` (Export Market
    Job Skill Profile)
  * `POST /job_architecture/export/job_families/skill_profiles` (Export Job
    Family Skill Profile)
  * `POST /job_architecture/export/job_families/suggested_skill_profiles`
    (Export Job Family Skill Suggested Profile)
* Added the `properties` query parameter to the following endpoints to filter
  skills by their properties:
  * `POST /employees/suggestions/skills` (Get suggestions, validated and
    rejected Skills for selected Employees)
  * `GET /skills/search` (Search for Skills similar to the text provided) The
    parameter uses the format `properties[property_name]=value` to filter
    skills that have a specific property with a specific value. For example,
    `properties[sap_status]=active` will only return skills that have the
    `sap_status` property set to `active`.
* Added the `external_vendor` query parameter to the
  `PATCH /taxonomy/skills/{skill_id}` endpoint to support updating descriptions
  and properties of Skills in an external vendor's Skill vocabulary.
* Added the `POST /taxonomy/skills` endpoint which allows for creating new
  Skills in the system, either in TechWolf Skill vocabulary or an external
  vendor's Skill vocabulary. This endpoint requires admin scope access.
* Added the `restore` query parameter to the `POST /employees` endpoint to
  enable support for restoration of soft deleted Employees during the grace
  period.
* Added the `include=proficiency` and `include=job_critical` to the query
  parameters of the `GET /employees/{employee_external_id}/suggestions/skills`
  endpoint to allow the `self_rated_proficiency_level` and
  `is_job_critical_skill` attributes to be included in the response.
* Added the `external_vendor` query parameter to all matching endpoints and some
  additional endpoints:
  * `POST /employees/{external_id}/matching_vacancies`
  * `POST /vacancies/{external_id}/matching_employees`
  * `POST /employees/{external_id}/matching_jobs`
  * `POST /job_architecture/jobs/{external_id}/matching_employees`
  * `POST /job_architecture/jobs/{external_id}/matching_source_jobs`
  * `POST /job_architecture/jobs/{external_id}/matching_target_jobs`
  * `POST /employees/{external_id}/matching_job_families`
  * `POST /job_architecture/job_families/{external_id}/matching_employees`
  * `POST /employees/{external_id}/matching_companies`
  * `POST /companies/{external_id}/matching_employees`
  * `GET /employees/{employee_external_id}/vacancies/{vacancy_external_id}/match`
  * `GET /employees/{employee_external_id}/jobs/{job_external_id}/match`
  * `GET /employees/{employee_external_id}/job_families/{job_family_external_id}/match`
  * `GET /employees/{employee_external_id}/match_assigned_position`
  * `POST /employees/{employee_external_id}/recommended_courses`
  * `POST /employees/{employee_external_id}/jobs/{job_external_id}/recommended_courses`
  * `POST /employees/{employee_external_id}/vacancies/{vacancy_external_id}/recommended_courses`
  * `POST /export/employees/match_assigned_position`
  * `POST /export/employees/matching_jobs`
  * `POST /export/employees/matching_vacancies`
  * `POST /export/vacancies/matching_employees`
  * `POST /job_architecture/export/jobs/matching_employees`
  * `POST /employees/search`
  * `POST /companies/search`
  * `POST /vacancies/search`
  * `POST /skills/lookup`

### September 2025

* Added the `GET /export/vacancies/skill_profiles` endpoint to paginate through
  all Skill Profiles of Vacancies in the API in bulk.
* Added support to display Skill Profiles in external vendor Skills with the
  `response_format=list` response format in the
  `POST /export/courses/skill_profiles` and
  `POST /export/vacancies/skill_profiles`
* Added support to display hierarchical Skill profiles with the
  `response_format=hierarchy` response format, for the
  `POST /export/courses/skill_profiles` and the
  `POST /export/vacancies/skill_profiles` endpoints, both for TechWolf Skills
  and external vendor Skills.
* Added an experimental `POST /export/skills` endpoint that exports the
  information for all Skills in the system.
* Added the `POST /export/employees/matching_jobs` endpoint to export the top
  matching Jobs for Employees.
* Added the `POST /job_architecture/export/jobs/matching_employees` endpoint to
  export the top matching Employees for Jobs.
* Added the `POST /export/employees/matching_vacancies` endpoint to export the
  top matching Vacancies for Employees.
* Added the `POST /export/vacancies/matching_employees` endpoint to export the
  top matching Employees for Vacancies.
* Added the `external_vendor` query parameter to the `POST /taxonomy/apply`
  endpoint to support applying Taxonomy Changes in an external vendor's Skill
  vocabulary.

### August 2025

* Added instructions on how to set up OAuth authentication to the Workday Skill
  Sync Integration documentation.
* Added support to display descriptions and domains for external vendor Skills
  in the `GET /taxonomy/skills/{skill_id}` endpoint.
* Added support to display Skill Profiles in external vendor Skills with the
  `response_format=hierarchy` response format in the
  `GET /employees/skill_profiles` and `POST /export/employees/skill_profiles`
  endpoints.
* Added support to display hierarchical Skill profiles with the
  `response_format=hierarchy` response format, for the
  `GET /courses/{course_external_id}/skill_profile` and the
  `GET /vacancies/{vacancy_external_id}/skill_profile` endpoints, both for
  TechWolf Skills and external vendor Skills.

### July 2025

* Add support to display adoption metrics in external vendor Skills in the
  `POST /job_architecture/jobs/metrics/adoption_metrics` and
  `POST employees/metrics/adoption_metrics` endpoints.
* Add support to display Skill Profiles in external vendor Skills with the
  `response_format=hierarchy` response format in the
  `GET /job_architecture/jobs/skill_profiles` and
  `GET /job_architecture/job_families/skill_profiles` endpoints.
* Add support to display Skill Profiles in external vendor Skills in the
  `POST /job_architecture/export/jobs/skill_profiles` and
  `POST /job_architecture/export/job_families/skill_profiles` endpoints.
* Add support to display the market Skill Profiles in external vendor Skills in
  the `GET /job_architecture/jobs/market_skill_profiles` and
  `POST /job_architecture/export/jobs/market_skill_profiles` endpoints.

### June 2025

* Update the `include` parameter in the\
  `GET /employees/{employee_external_id}/skill_profile` endpoint to allow
  `inferred_proficiency_level` and `inferred_proficiency_float` to be included
  with `response_format=list`.
* Update the `include` body parameter in the\
  `POST export/employees/skill_profiles` endpoint to allow the
  `self_rated_proficiency_level`, `self_rated_proficiency_float`
  ,`inferred_proficiency_level` and `inferred_proficiency_float` fields to be
  included.
* Add the `GET /job_architecture/issues` endpoint to fetch Job issues.
* Add the `GET /job_architecture/issues/summary` endpoint to get a summary of
  the number of Job issues per type.
* Add the `include=issues` parameter to the `GET /job_architecture/export`
  endpoint.
* Add the `GET /job_architecture/changes` endpoint to fetch Job architecture
  changes.
* Add the `POST /job_architecture/changes` endpoint to start the batch
  generation of Job changes.
* Add the `PATCH /job_architecture/changes` endpoint to bulk update multiple job
  architecture changes at once.
* Add the `GET /job_architecture/changes/summary` endpoint to get a summary of
  the number of Job changes per type.
* Add the `POST /job_architecture/changes/preview` endpoint to generate a
  preview Job change.
* Add the `GET /job_architecture/changes/{change_id}` endpoint to get detailed
  information about a specific Job architecture change.
* Add the `PATCH /job_architecture/changes/{change_id}` endpoint to update a
  specific Job architecture change with new data.

### May 2025

* Add the `self_rated_proficiency_level` and `self_rated_proficiency_float`
  attributes to the request body of the
  `PATCH /employees/{employee_external_id}/skill_profile` endpoint for the
  `skills` and `external_vendor_skills` feedback formats.
* Update the `include` parameter in the
  `GET /employees/{employee_external_id}/skill_profile` endpoint to allow
  `self_rated_proficiency_level` and `self_rated_proficiency_float` to be
  included with `response_format=list`.

### April 2025

* Add the `GET /job_architecture/jobs/market_alignment` and
  `POST job_architecture/export/jobs/market_alignment` endpoints.

### March 2025

* Add `ticket_system` field to the `ticket` event type to be able to specify the
  ticketing system where the ticket originated from. This field is important for
  skill inference as different models may be used for different ticketing
  systems.

### February 2025

* Allow patching of Organisational Units with `parent_id=null` to become a root
  Organisational Unit in the `PATCH /organisational_units/{external_id}`
  endpoint.
* Add `GET /job_architecture/peer_groups` endpoint.

### January 2025

* Add the optional `proficiency_float` field to the request body of the
  `PATCH /job_architecture/jobs/{job_external_id}/skill_profile` and
  `PATCH /job_architecture/job_families/{job_family_external_id}/skill_profile`
  endpoints.
* Add the `include=proficiency_float` option to the include query parameter of
  the `GET /job_architecture/jobs/{job_external_id}/skill_profile` and
  `GET /job_architecture/job_families/{job_family_external_id}/skill_profile`
  endpoints.
* Add the `include=proficiency_float` option to the include body parameter of
  the `POST /job_architecture/export/jobs/skill_profiles` and
  `POST /job_architecture/export/job_families/skill_profiles` endpoints.
* Add the `external_vendor` query parameter to the
  `POST /employees/suggestions/skills` endpoint
* Remove the `strict` query parameter from the
  `POST /employees/suggestions/skills` endpoint
* Add the `include=critical` option to the include query parameters to the
  `GET /job_architecture/jobs/{job_external_id}/suggested_skill_profile`
  endpoint.
* Update the `include` parameter in the
  `GET /job_architecture/jobs/{job_external_id}/skill_profile` and
  `GET /job_architecture/job_families/{job_family_external_id}/skill_profile`
  endpoints to allow `proficiency_level` and `critical` to be included with
  `response_format=hierarchy`
* Make the `skill_cluster_description` optional and set it to an empty string by
  default. Additionally, save any placeholder value or a description that
  exactly matches the Skill Cluster name as an empty string.

### 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.
* Add the `external_vendor` query parameter to the `GET /skills/search`
  endpoint.
* Return the default proficiency level when no proficiency level is set in the
  `GET /job_architecture/jobs/{job_external_id}/skill_profile`,
  `POST /job_architecture/export/jobs/skill_profiles`,
  `GET /job_architecture/job_families/{job_family_external_id}/skill_profile`,
  and `POST /job_architecture/export/job_families/skill_profiles` endpoints.
* Add the `force_recalculate` query parameter to all report endpoints.

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