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

# Upsert staffing entity skill expectation

> Upsert staffing entity skill expectation

<Warning>**Closed Beta Feature:** This endpoint is currently in closed beta. We're testing it with selected customers before its public release. If you're interested in learning more or getting early access, please reach out.</Warning>

Create or update a skill expectation on a staffing entity.


## OpenAPI

````yaml POST /hris/staffing-entity-skills
openapi: 3.1.0
info:
  title: Kombo API
  version: 1.0.0
servers:
  - url: https://api.kombo.dev/v1
    description: Kombo EU API
  - url: https://api.us.kombo.dev/v1
    description: Kombo US API
security:
  - ApiKey: []
tags:
  - name: General
  - name: Kombo Connect
    description: >-
      Endpoints for Kombo Connect, our end-user-facing flow for setting up new
      integrations.
  - name: Unified HRIS API
    description: Unified endpoints to access all the HR concepts you might need.
  - name: Unified ATS API
    description: Unified endpoints to access all the ATS concepts you might need.
  - name: Unified ATS (Assessment & Background Check) API
    description: >-
      Unified endpoints to operate Assessments and Background Checks for many
      applicant tracking systems.
  - name: Unified LMS API
    description: Unified endpoints to access all the LMS concepts you might need.
  - name: AI Apply
    description: Endpoints for AI-powered job application features.
  - name: Custom Endpoints
    description: Custom integration-specific endpoints.
paths:
  /hris/staffing-entity-skills:
    post:
      tags:
        - Unified HRIS API
      summary: Upsert staffing entity skill expectation
      description: >-
        Upsert staffing entity skill expectation




        <Warning>**Closed Beta Feature:** This endpoint is currently in closed
        beta. We're testing it with selected customers before its public
        release. If you're interested in learning more or getting early access,
        please reach out.</Warning>




        Create or update a skill expectation on a staffing entity.
      operationId: PostHrisStaffingEntitySkills
      parameters:
        - in: header
          name: X-Integration-Id
          schema:
            type: string
          description: ID of the integration you want to interact with.
          example: bamboohr:HWUTwvyx2wLoSUHphiWVrp28
          required: true
      requestBody:
        description: POST /hris/staffing-entity-skills Request body
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostHrisStaffingEntitySkillsRequestBody'
            examples:
              example1:
                value:
                  staffing_entity_id: 26vafvWSRmbhNcxJYqjCzuJg
                  skill_id: 28KMdr68N8kG9EzLwjsN9aoz
                  expected_level: 4
      responses:
        '200':
          description: POST /hris/staffing-entity-skills Positive response
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/PostHrisStaffingEntitySkillsPositiveResponse
              examples:
                example1:
                  value:
                    status: success
                    data:
                      id: C8gqYqWk6N3qjvJ8vh5o3VtH
                      staffing_entity_id: 26vafvWSRmbhNcxJYqjCzuJg
                      skill_id: 28KMdr68N8kG9EzLwjsN9aoz
                      expected_level: 4
                      changed_at: '2022-08-07T14:01:29.196Z'
                      remote_deleted_at: null
        default:
          $ref: '#/components/responses/ErrorResponseHRIS'
components:
  schemas:
    PostHrisStaffingEntitySkillsRequestBody:
      type: object
      properties:
        staffing_entity_id:
          type: string
          description: The Kombo ID of the staffing entity to attach the skill to.
        skill_id:
          type: string
          description: The Kombo ID of the skill.
        expected_level:
          type: integer
          format: int64
          minimum: 1
          maximum: 5
          description: >-
            The expected proficiency level. Omit to attach the skill without an
            expected level.
      required:
        - staffing_entity_id
        - skill_id
    PostHrisStaffingEntitySkillsPositiveResponse:
      type: object
      properties:
        status:
          type: string
          const: success
        data:
          type: object
          properties:
            id:
              type: string
              description: >-
                The globally unique ID of this object generated by Kombo. We
                recommend using this as a stable primary key for syncing.
            staffing_entity_id:
              type: string
              description: >-
                The Kombo ID of the staffing entity the skill is expected on.
                Can be used to retrieve it from the `get staffing entities`
                endpoint.
            skill_id:
              type: string
              description: The Kombo ID of the skill.
            expected_level:
              type:
                - integer
                - 'null'
              format: int64
              minimum: 1
              maximum: 5
              description: >-
                The expected proficiency level. `null` when the source system
                carries no level on the role side.
            changed_at:
              description: >-
                The timestamp when this specific record was last modified. This
                field only updates when properties directly on this record
                change, NOT when related or nested models change. For filtering
                that considers nested data changes, use the `updated_after`
                parameter which will return records when either the record
                itself OR its related models have been updated.
              type: string
              format: date-time
              externalDocs:
                url: >-
                  https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
            remote_deleted_at:
              description: >-
                The date and time the object was deleted in the remote system.
                Objects are automatically marked as deleted when Kombo can't
                retrieve them from the remote system anymore. Kombo will also
                anonymize entries 14 days after they disappear.
              type:
                - string
                - 'null'
              format: date-time
              externalDocs:
                url: >-
                  https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
          required:
            - id
            - staffing_entity_id
            - skill_id
            - expected_level
            - changed_at
            - remote_deleted_at
          examples:
            - id: C8gqYqWk6N3qjvJ8vh5o3VtH
              staffing_entity_id: 26vafvWSRmbhNcxJYqjCzuJg
              skill_id: 28KMdr68N8kG9EzLwjsN9aoz
              expected_level: 4
              changed_at: '2022-08-07T14:01:29.196Z'
              remote_deleted_at: null
      required:
        - status
        - data
  responses:
    ErrorResponseHRIS:
      description: The standard error response with the error codes for the HRIS use case.
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                type: string
                enum:
                  - error
              error:
                type: object
                properties:
                  code:
                    type:
                      - string
                      - 'null'
                    enum:
                      - PLATFORM.RATE_LIMIT_EXCEEDED
                      - PLATFORM.CONCURRENCY_LIMIT_EXCEEDED
                      - PLATFORM.INTEGRATION_NOT_FOUND
                      - PLATFORM.INPUT_INVALID
                      - PLATFORM.UNKNOWN_ERROR
                      - PLATFORM.IP_NOT_WHITELISTED
                      - PLATFORM.AUTHENTICATION_INVALID
                      - PLATFORM.TASK_TIMED_OUT
                      - INTEGRATION.PERMISSION_MISSING
                      - INTEGRATION.AUTHENTICATION_INVALID
                      - INTEGRATION.QA_FAILED
                      - INTEGRATION.SETUP_SYNC_PENDING
                      - INTEGRATION.SETUP_INCOMPLETE
                      - INTEGRATION.INACTIVE
                      - INTEGRATION.MODEL_NOT_AVAILABLE
                      - INTEGRATION.MODEL_DISABLED
                      - INTEGRATION.ACTION_NOT_AVAILABLE
                      - INTEGRATION.ACTION_DISABLED
                      - REMOTE.SERVICE_UNAVAILABLE
                      - REMOTE.RATE_LIMIT_EXCEEDED
                      - REMOTE.INPUT_INVALID
                      - REMOTE.UNKNOWN_HTTP_ERROR
                      - HRIS.STAFFING_ENTITY_CLOSED
                      - HRIS.EMPLOYEE_ALREADY_EXISTS
                    example: HRIS.EMPLOYEE_ALREADY_EXISTS
                    description: >-
                      Some errors include an error code that can be used to
                      identify their cause. See the [Error Handling
                      Docs](https://docs.kombo.dev/guides/errors) for more
                      information. For your error handling logic please use the
                      error `code` instead of other properties (e.g. message,
                      http status code, ...).
                  title:
                    type:
                      - string
                      - 'null'
                    description: A static, human-readable label.
                  message:
                    type: string
                    description: >-
                      A dynamic, detailed description of what went wrong in this
                      specific instance.
                  log_url:
                    type:
                      - string
                      - 'null'
                    format: uri
                    description: >-
                      The log page in the Kombo UI lists every interaction with
                      full details. If you need assistance, share that link with
                      our support team.
                required:
                  - code
                  - title
                  - message
                  - log_url
                description: Error details with structured code for programmatic handling.
            required:
              - status
              - error
          examples:
            Error Response:
              description: >-
                When building error handling logic, always use the `code` field
                to identify specific error types programmatically. See the
                complete list of error codes in the
                [docs](https://docs.kombo.dev/guides/errors).
              value:
                status: error
                error:
                  code: INTEGRATION.MODEL_NOT_AVAILABLE
                  title: >-
                    This data model isn't supported for the selected
                    integration.
                  message: >-
                    The "employees" model is not yet available for Greenhouse.
                    Please reach out to Kombo if you need this functionality.
                  log_url: https://app.kombo.dev/my-prod/logs?interactionId=123456
            Minimal Error Response:
              description: >-
                The "message" is always required while other fields can also be
                `null`. See the [docs](https://docs.kombo.dev/guides/errors) for
                more information.
              value:
                status: error
                error:
                  code: null
                  title: null
                  message: The message is always in the response.
                  log_url: null
  securitySchemes:
    ApiKey:
      type: http
      scheme: bearer
      description: >-
        Create an API key on the [Secrets](https://app.kombo.dev/secrets) page
        in the Kombo dashboard.

````