curl --request PATCH \
--url https://{tenant_name}.{region}.techwolf.ai/employees/{employee_external_id}/skill_events/{skill_event_external_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"timestamp": "2025-05-02",
"source": "employee-archives",
"content": {
"job_title": "HR Manager",
"start_date": "2018-09-05",
"end_date": "2020-06-17",
"company": "TechWolf BV",
"job_description": "Manage the HR department and perform workforce planning"
}
}
'import requests
url = "https://{tenant_name}.{region}.techwolf.ai/employees/{employee_external_id}/skill_events/{skill_event_external_id}"
payload = {
"timestamp": "2025-05-02",
"source": "employee-archives",
"content": {
"job_title": "HR Manager",
"start_date": "2018-09-05",
"end_date": "2020-06-17",
"company": "TechWolf BV",
"job_description": "Manage the HR department and perform workforce planning"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
timestamp: '2025-05-02',
source: 'employee-archives',
content: {
job_title: 'HR Manager',
start_date: '2018-09-05',
end_date: '2020-06-17',
company: 'TechWolf BV',
job_description: 'Manage the HR department and perform workforce planning'
}
})
};
fetch('https://{tenant_name}.{region}.techwolf.ai/employees/{employee_external_id}/skill_events/{skill_event_external_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{tenant_name}.{region}.techwolf.ai/employees/{employee_external_id}/skill_events/{skill_event_external_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'timestamp' => '2025-05-02',
'source' => 'employee-archives',
'content' => [
'job_title' => 'HR Manager',
'start_date' => '2018-09-05',
'end_date' => '2020-06-17',
'company' => 'TechWolf BV',
'job_description' => 'Manage the HR department and perform workforce planning'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{tenant_name}.{region}.techwolf.ai/employees/{employee_external_id}/skill_events/{skill_event_external_id}"
payload := strings.NewReader("{\n \"timestamp\": \"2025-05-02\",\n \"source\": \"employee-archives\",\n \"content\": {\n \"job_title\": \"HR Manager\",\n \"start_date\": \"2018-09-05\",\n \"end_date\": \"2020-06-17\",\n \"company\": \"TechWolf BV\",\n \"job_description\": \"Manage the HR department and perform workforce planning\"\n }\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://{tenant_name}.{region}.techwolf.ai/employees/{employee_external_id}/skill_events/{skill_event_external_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"timestamp\": \"2025-05-02\",\n \"source\": \"employee-archives\",\n \"content\": {\n \"job_title\": \"HR Manager\",\n \"start_date\": \"2018-09-05\",\n \"end_date\": \"2020-06-17\",\n \"company\": \"TechWolf BV\",\n \"job_description\": \"Manage the HR department and perform workforce planning\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{tenant_name}.{region}.techwolf.ai/employees/{employee_external_id}/skill_events/{skill_event_external_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"timestamp\": \"2025-05-02\",\n \"source\": \"employee-archives\",\n \"content\": {\n \"job_title\": \"HR Manager\",\n \"start_date\": \"2018-09-05\",\n \"end_date\": \"2020-06-17\",\n \"company\": \"TechWolf BV\",\n \"job_description\": \"Manage the HR department and perform workforce planning\"\n }\n}"
response = http.request(request)
puts response.read_body[
{
"title": "401 Unauthorized",
"description": "OAuth access token is missing, invalid or expired."
}
][
{
"title": "403 Forbidden",
"description": "You don't have access to this resource."
}
][
{
"title": "404 Not Found",
"description": "Unknown external_id describing this resource. Please create this resource first."
}
][
{
"title": "405 Method Not Allowed",
"description": "This method is not allowed for the requested URL."
}
]"max connections reached: <limit>"[
{
"title": "503 Service Unavailable",
"description": "The Skill Engine API is currently not available. Please contact TechWolf or try again later."
}
]Update Skill Event
Update a Skill Event for an Employee.
Note: It may take some time for these changes to be reflected in the employee’s final skill profile, since they are processed asynchronously.
curl --request PATCH \
--url https://{tenant_name}.{region}.techwolf.ai/employees/{employee_external_id}/skill_events/{skill_event_external_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"timestamp": "2025-05-02",
"source": "employee-archives",
"content": {
"job_title": "HR Manager",
"start_date": "2018-09-05",
"end_date": "2020-06-17",
"company": "TechWolf BV",
"job_description": "Manage the HR department and perform workforce planning"
}
}
'import requests
url = "https://{tenant_name}.{region}.techwolf.ai/employees/{employee_external_id}/skill_events/{skill_event_external_id}"
payload = {
"timestamp": "2025-05-02",
"source": "employee-archives",
"content": {
"job_title": "HR Manager",
"start_date": "2018-09-05",
"end_date": "2020-06-17",
"company": "TechWolf BV",
"job_description": "Manage the HR department and perform workforce planning"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
timestamp: '2025-05-02',
source: 'employee-archives',
content: {
job_title: 'HR Manager',
start_date: '2018-09-05',
end_date: '2020-06-17',
company: 'TechWolf BV',
job_description: 'Manage the HR department and perform workforce planning'
}
})
};
fetch('https://{tenant_name}.{region}.techwolf.ai/employees/{employee_external_id}/skill_events/{skill_event_external_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{tenant_name}.{region}.techwolf.ai/employees/{employee_external_id}/skill_events/{skill_event_external_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'timestamp' => '2025-05-02',
'source' => 'employee-archives',
'content' => [
'job_title' => 'HR Manager',
'start_date' => '2018-09-05',
'end_date' => '2020-06-17',
'company' => 'TechWolf BV',
'job_description' => 'Manage the HR department and perform workforce planning'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{tenant_name}.{region}.techwolf.ai/employees/{employee_external_id}/skill_events/{skill_event_external_id}"
payload := strings.NewReader("{\n \"timestamp\": \"2025-05-02\",\n \"source\": \"employee-archives\",\n \"content\": {\n \"job_title\": \"HR Manager\",\n \"start_date\": \"2018-09-05\",\n \"end_date\": \"2020-06-17\",\n \"company\": \"TechWolf BV\",\n \"job_description\": \"Manage the HR department and perform workforce planning\"\n }\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://{tenant_name}.{region}.techwolf.ai/employees/{employee_external_id}/skill_events/{skill_event_external_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"timestamp\": \"2025-05-02\",\n \"source\": \"employee-archives\",\n \"content\": {\n \"job_title\": \"HR Manager\",\n \"start_date\": \"2018-09-05\",\n \"end_date\": \"2020-06-17\",\n \"company\": \"TechWolf BV\",\n \"job_description\": \"Manage the HR department and perform workforce planning\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{tenant_name}.{region}.techwolf.ai/employees/{employee_external_id}/skill_events/{skill_event_external_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"timestamp\": \"2025-05-02\",\n \"source\": \"employee-archives\",\n \"content\": {\n \"job_title\": \"HR Manager\",\n \"start_date\": \"2018-09-05\",\n \"end_date\": \"2020-06-17\",\n \"company\": \"TechWolf BV\",\n \"job_description\": \"Manage the HR department and perform workforce planning\"\n }\n}"
response = http.request(request)
puts response.read_body[
{
"title": "401 Unauthorized",
"description": "OAuth access token is missing, invalid or expired."
}
][
{
"title": "403 Forbidden",
"description": "You don't have access to this resource."
}
][
{
"title": "404 Not Found",
"description": "Unknown external_id describing this resource. Please create this resource first."
}
][
{
"title": "405 Method Not Allowed",
"description": "This method is not allowed for the requested URL."
}
]"max connections reached: <limit>"[
{
"title": "503 Service Unavailable",
"description": "The Skill Engine API is currently not available. Please contact TechWolf or try again later."
}
]Authorizations
The access token received from the authorization server in the OAuth 2.0 flow.
Path Parameters
Unique ID linked to an Employee, consisting of alphanumeric characters, hyphens and underscores. The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.
1 - 100[a-zA-Z0-9_-]+"a3903505-eb84-42dc-a79f-5e7b1fe897b7"
Unique ID linked to a Skill Event, consisting of alphanumeric characters, hyphens and underscores. The unique ID in your system, consisting of alphanumeric characters, hyphens and underscores.
1 - 100[a-zA-Z0-9_-]+"a3903505-eb84-42dc-a79f-5e7b1fe897b7"
Query Parameters
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.
auto, nl, fr, en, de "en"
Body
Update structure of a Skill Event.
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.
"2025-05-02"
The source system of the Skill Event. This is used to keep track of where Skill Events originate from.
"employee-archives"
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.
- working_history
- working_history_job
- education_history
- resume_document
- learning
- learning_course
- feedback
- goal
- project
- ticket
- certificate
- skill_notes
Show child attributes
Show child attributes
Response
No Content
Was this page helpful?