Upsert managed skill
curl --request POST \
--url https://api.kombo.dev/v1/hris/skills \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-Integration-Id: <x-integration-id>' \
--data '
{
"origin_id": "skill-1",
"name": "TypeScript Programming",
"status": "ACTIVE"
}
'import requests
url = "https://api.kombo.dev/v1/hris/skills"
payload = {
"origin_id": "skill-1",
"name": "TypeScript Programming",
"status": "ACTIVE"
}
headers = {
"X-Integration-Id": "<x-integration-id>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-Integration-Id': '<x-integration-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({origin_id: 'skill-1', name: 'TypeScript Programming', status: 'ACTIVE'})
};
fetch('https://api.kombo.dev/v1/hris/skills', 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://api.kombo.dev/v1/hris/skills",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'origin_id' => 'skill-1',
'name' => 'TypeScript Programming',
'status' => 'ACTIVE'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"X-Integration-Id: <x-integration-id>"
],
]);
$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://api.kombo.dev/v1/hris/skills"
payload := strings.NewReader("{\n \"origin_id\": \"skill-1\",\n \"name\": \"TypeScript Programming\",\n \"status\": \"ACTIVE\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Integration-Id", "<x-integration-id>")
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.post("https://api.kombo.dev/v1/hris/skills")
.header("X-Integration-Id", "<x-integration-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"origin_id\": \"skill-1\",\n \"name\": \"TypeScript Programming\",\n \"status\": \"ACTIVE\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.kombo.dev/v1/hris/skills")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Integration-Id"] = '<x-integration-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"origin_id\": \"skill-1\",\n \"name\": \"TypeScript Programming\",\n \"status\": \"ACTIVE\"\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"data": {
"origin_id": "skill-1",
"name": "TypeScript Programming",
"deactivated_at": null
},
"warnings": [
{
"message": "This is an example warning!"
}
]
}Skills
Upsert managed skill
Create or update a skill in the catalog managed by your system.
POST
/
hris
/
skills
Upsert managed skill
curl --request POST \
--url https://api.kombo.dev/v1/hris/skills \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-Integration-Id: <x-integration-id>' \
--data '
{
"origin_id": "skill-1",
"name": "TypeScript Programming",
"status": "ACTIVE"
}
'import requests
url = "https://api.kombo.dev/v1/hris/skills"
payload = {
"origin_id": "skill-1",
"name": "TypeScript Programming",
"status": "ACTIVE"
}
headers = {
"X-Integration-Id": "<x-integration-id>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-Integration-Id': '<x-integration-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({origin_id: 'skill-1', name: 'TypeScript Programming', status: 'ACTIVE'})
};
fetch('https://api.kombo.dev/v1/hris/skills', 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://api.kombo.dev/v1/hris/skills",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'origin_id' => 'skill-1',
'name' => 'TypeScript Programming',
'status' => 'ACTIVE'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"X-Integration-Id: <x-integration-id>"
],
]);
$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://api.kombo.dev/v1/hris/skills"
payload := strings.NewReader("{\n \"origin_id\": \"skill-1\",\n \"name\": \"TypeScript Programming\",\n \"status\": \"ACTIVE\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Integration-Id", "<x-integration-id>")
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.post("https://api.kombo.dev/v1/hris/skills")
.header("X-Integration-Id", "<x-integration-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"origin_id\": \"skill-1\",\n \"name\": \"TypeScript Programming\",\n \"status\": \"ACTIVE\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.kombo.dev/v1/hris/skills")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Integration-Id"] = '<x-integration-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"origin_id\": \"skill-1\",\n \"name\": \"TypeScript Programming\",\n \"status\": \"ACTIVE\"\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"data": {
"origin_id": "skill-1",
"name": "TypeScript Programming",
"deactivated_at": null
},
"warnings": [
{
"message": "This is an example warning!"
}
]
}Supported integrations
Supported integrations
This feature is currently available for the following integrations:You’d like to see this feature for another integration? Please reach out!
We’re always happy to discuss extending our coverage.
This endpoint requires the permission Manage skill catalog to be enabled in your scope config.
Example Request Body
{
"origin_id": "skill-1",
"name": "TypeScript Programming",
"status": "ACTIVE"
}
Authorizations
Headers
ID of the integration you want to interact with.
Body
application/json
POST /hris/skills Request body
A stable identifier for this skill in your system. Re-sending the same origin_id updates the skill.
The name of the skill.
Minimum string length:
1The desired status of the skill in the remote HRIS. INACTIVE requests deactivation or archival where supported.
Available options:
ACTIVE, INACTIVE Response
POST /hris/skills Positive response
Allowed value:
"success"Show child attributes
Show child attributes
Example:
{
"origin_id": "skill-1",
"name": "TypeScript Programming",
"deactivated_at": null
}
These are the interaction warnings that are shown in the dashboard. They are meant to provide debug information to you. We recommend logging them to the console.
Show child attributes
Show child attributes
Was this page helpful?