|
Http Verb |
POST |
|---|---|
|
Url |
/integration/workforce/resource/r1/qualifications |
|
Permissions required |
Core Additional Parameters: Edit (fsm.core.additionalparameter.edit)
|
|
Last Modified Version |
r1 |
|
Tech Tags |
|
|
Available Async |
No |
BPMN Diagram (TBD)
Business Logic
This Integration API creates or updates the association between a resource and one or more qualifications.
System verifies Permission Required and starts the elaboration that is organized in steps.
STEP 1 - External System Validation
System takes Input fields and checks their existence in internal configuration.
API Verb: GET
Resource: External Systems
Input: externalSystemCode, active=true
Output: externalSystemId
If System can obtain the Output fields → continue to next step.
If System can’t obtain the Output fields → responds with error. Elaboration is stopped.
STEP 2 - Resource Validation
System takes Input fields and checks their existence in internal configuration.
If System can obtain the Output fields → continue to next step.
If System can't obtain the Output fields → responds with error. Elaboration is stopped.
STEP 3 - Qualification Validation
System takes Input fields and checks their existence in internal configuration.
API Verb: GET
Resource: Qualifications
Input: qualificationCode, active=true
Output: qualificationId
If System can obtain the Output fields → continue to next step.
If System can't obtain the Output fields → responds with error. Elaboration is stopped.
STEP 4 - Skill Validation
System takes Input fields and checks their existence in internal configuration.
If System can obtain the Output fields → continue to next step.
If System can't obtain the Output fields → responds with error. Elaboration is stopped.
STEP 4 - Skill Level Validation
System takes Input fields and checks their existence in internal configuration.
If System can obtain the Output fields → continue to next step.
If System can't obtain the Output fields → responds with error. Elaboration is stopped.
STEP 5 - Resource Qualification Retrieve
System takes Input fields and checks their existence in internal configuration.
API Verb: GET
Resource: /{resourceId}/qualifications
Input: resourceId
Output: qualificationId, startDate, endDate
If System can obtain the Output fields, compares the ‘qualificationId-startDate’ pairs list in output with ‘qualificationId-startDate’ pairs list in input body:
-
If there are pairs in output not present in input body → continue to next step.
-
If there are pairs in output present also in input body and delete=true →Delete → go to next step Resource Qualification Deletion
-
If there are pairs in output present also in input body and delete=false → Update → go to step Resource Qualification Update.
-
If there are pairs in input body not present in output → Create → go to step Resource Qualification Creation.
If System can’t obtain the Output fields → responds with error. Elaboration is stopped.
Error Type:
-
Others - see link in Resource
STEP 6 - Resource Skill Retrieve
System takes Input fields and checks their existence in internal configuration.
If System can obtain the Output fields, compares the resourceSkillId list in output with resourceSkillId list in input body:
-
If there are resourceSkillId in output present also in input body → Update → go to step Resource Skill Update.
-
If there are resourceSkillId in input body not present in output → Create → go to step Resource Skill Creation.
If System can’t obtain the Output fields → responds with error. Elaboration is stopped.
Error Type:
-
Others - see link in Resource
STEP 7 - Resource Qualification Management
STEP 7a - Resource Qualification Creation
System takes Input fields and creates the relationship between a Resource and a Qualification.
This step is skipped if Input fields are null or absent.
API Verb: POST
Resource: /{resourceId}/qualifications
Input: resourceId, qualificationId, startDate, endDate
Output: Response State
If Response State is SUCCESS → continue to next step.
If Response State is ERROR → elaboration is stopped. See Response payload fields.
Error Type:
-
Others - see link in Resource
STEP 7b - Resource Qualification Deletion
System takes Input fields and deletes the relationship between a Resource and a Qualification.
This step is skipped if Input fields are null or absent.
API Verb: DELETE
Resource: /{resourceId}/qualifications/{qualificationsId}/{startDate}
Input: resourceId, qualificationId, startDate, deleted=true
Output: Response State
If Response State is SUCCESS → continue to next step.
If Response State is ERROR → elaboration is stopped. See Response payload fields.
Error Type:
-
Others - see link in Resource
STEP 7c - Resource Qualification Update
System takes Input fields and updates the relationship between a Resource and a Qualification.
This step is skipped if Input fields are null or absent.
API Verb: PATCH
Resource: /{resourceId}/qualifications/{qualificationId}/{startDate}
Input: resourceId, qualificationId, startDate, endDate
Output: Response State
If Response State is SUCCESS → continue to next step.
If Response State is ERROR → elaboration is stopped. See Response payload fields.
Error Type:
-
Others - see link in Resource
STEP 8 - Resource Skill Management
STEP 7a - Resource Skill Creation
System takes Input fields and creates the relationship between a Resource and a Skill.
This step is skipped if Input fields are null or absent.
API Verb: POST
Resource: /{resourceId}/skills
Input: resourceId, skillId, skillLevelId
Output: Response State
If Response State is SUCCESS → continue to next step.
If Response State is ERROR → elaboration is stopped. See Response payload fields.
Error Type:
-
Others - see link in Resource
STEP 7b - Resource Skill Update
System takes Input fields and updates the relationship between a Resource and a Skill.
This step is skipped if Input fields are null or absent.
API Verb: PATCH
Resource: /{resourceId}/skills/{skillId}
Input: resourceId, skillId, skillLevelId
Output: Response State
If Response State is SUCCESS → elaboration is stopped. See Response payload fields.
If Response State is ERROR → elaboration is stopped. See Response payload fields.
Error Type:
-
Others - see link in Resource
Path Parameters
As their name suggests, they are included in the URL path of the endpoint.
Not applicable.
Query String Parameters
Start with a ? and includes parameters listed one after the another separated by &.
Not applicable.
Header Parameters
Parameters included in the request headers. Generally, request headers are used to keep authorization parameters.
Default.
Request Body Parameters
Request body parameters are used when clients send data to the API. They are shipped in a JSON Object only in POST, PUT, or PATCH requests.
|
Field |
|
Description |
Mandatory |
Constraint |
|---|---|---|---|---|
|
externalSystemCode |
|
External System Code |
Y |
Not Blank |
|
resource |
identificationNumber |
Identification Number |
Y |
Not Blank |
|
qualifications (minOccurs=1, maxOccurs=N) |
code |
Qualification Code |
Y |
|
|
startDate |
Qualification Validity Start Date |
N |
|
|
|
endDate |
Qualification Validity End Date |
N |
|
|
|
deleted |
Flag for delete the qualification (default = false) |
N |
|
|
|
skills (minOccurs=0, maxOccurs=N) |
code |
Skill Code |
N |
|
|
levelCode |
Skill Level Code |
N |
|
The objects in input could have also the extension object that allows to add additional, customized data to this API. More info here How to use APIs: Custom data via Extension.
Request example
{
"externalSystemCode": "SAP",
"resource": {
"identificationNumber": "000054321"
"extension": {
}
},
"qualifications": [
{
{
"extension": {
"myFieldName": "myValue"
},
"code": "Q-ELE-LV",
"startDate": "2026-01-01T00:00:00.000Z",
"endDate": "2026-12-31T23:59:59.000Z",
"deleted":true
},
{
{
"extension": {
"myFieldName": "myValue"
},
"code": "Q-SAFETY-FIELD",
"startDate": "2026-02-01T00:00:00.000Z",
"endDate": "2026-03-01T00:00:00.000Z"
}
],
"skills": [
{
"extension": {
"myFieldName": "myValue"
},
"code": "ELEC",
"levelCode": "3"
}
]
}
Response documentation
Response payload fields
Compliant with RFC Standard https://www.rfc-editor.org/rfc/rfc9457.html
Extension fields:
|
Field |
Description |
Note |
|---|---|---|
|
id |
Id of the resource created |
Only for SUCCESS in Insert case |
|
code |
Extension member of a Problem Details Object that contains the error code |
Only for ERROR |
Response example
{
"id": 123456
}
{
"type": "about:blank",
"title": "Not Found",
"status": 404,
"detail": "External system string does not exist",
"instance": "/integration/workforce/r1/resources",
"code": "IA001_001"
}