NextGen APIs

POST /integration/workforce/resource/r1/qualifications

Http Verb

POST

Url

/integration/workforce/resource/r1/qualifications

Permissions required

Core Additional Parameters: Edit (fsm.core.additionalparameter.edit)
Resource Configuration: View (fsm.core.resource.configuration.view)
Resource: View (fsm.core.resource.view)
Resource: Edit (fsm.core.resource.edit)
Configuration: View (fsm.core.configuration.view)
Qualification configuration: View/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.

Error Type:

STEP 2 - Resource Validation

System takes Input fields and checks their existence in internal configuration.

API Verb: GET

Resource: Resources

Input: identificationNumber, loan=false

Output: resourceId

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.

Error Type:

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.

Error Type:

STEP 4 - Skill Validation

System takes Input fields and checks their existence in internal configuration.

API Verb: GET

Resource: Skills

Input: skillCode, active=true

Output: skillId

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.

Error Type:

STEP 4 - Skill Level Validation

System takes Input fields and checks their existence in internal configuration.

API Verb: GET

Resource: Skill Levels

Input: levelCode

Output: levelId

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.

Error Type:

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.

API Verb: GET

Resource: /{resourceId}/skills

Input: resourceId

Output: resourceSkillId

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

JSON
{
  "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

JSON
{
  "id": 123456
}
JSON
{
  "type": "about:blank",
  "title": "Not Found",
  "status": 404,
  "detail": "External system string does not exist",
  "instance": "/integration/workforce/r1/resources",
  "code": "IA001_001"
}

 

Response error codes