# Initiate EOR contract termination request

POST https://api.letsdeel.com/rest/v2/eor/contracts/{contract_id}/offboarding/termination
Content-Type: multipart/form-data

Enables clients to initiate a request for the termination of an Employee of Record (EOR) contract for members of their team.
 **Token scopes**: `contracts:write`

Reference: https://developer.deel.com/api/eor-endpoints/eor-terminations/create-offboarding-termination

## OpenAPI Specification

```yaml
openapi: 3.1.0
info:
  title: Deel HRIS SCIM API
  version: 1.0.0
paths:
  /eor/contracts/{contract_id}/offboarding/termination:
    post:
      operationId: create-offboarding-termination
      summary: Initiate EOR contract termination request
      description: >-
        Enables clients to initiate a request for the termination of an Employee
        of Record (EOR) contract for members of their team.
         **Token scopes**: `contracts:write`
      tags:
        - subpackage_eorTerminations
      parameters:
        - name: contract_id
          in: path
          description: The unique identifier of the employee contract.
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: >
            ## Authentication

            The Deel API uses bearer tokens to authenticate requests. All API
            calls must be made over HTTPS — calls over plain HTTP or without
            authentication will fail.


            ```curl

            curl -X GET 'https://api.letsdeel.com/rest/v2/contracts' \
              -H 'Authorization: Bearer YOUR-TOKEN-HERE'
            ```


            [Learn more about authentication](/api/authentication)
          required: true
          schema:
            type: string
      responses:
        '201':
          description: Ok response
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/eor-terminations_createOffboardingTermination_Response_201
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/InitiateEorContractTerminationRequestRequestBadRequestError
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/InitiateEorContractTerminationRequestRequestUnauthorizedError
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/InitiateEorContractTerminationRequestRequestForbiddenError
        '404':
          description: Operation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorContainer'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/InitiateEorContractTerminationRequestRequestInternalServerError
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                data:
                  $ref: >-
                    #/components/schemas/EorContractsContractIdOffboardingTerminationPostRequestBodyContentMultipartFormDataSchemaData
              required:
                - data
servers:
  - url: https://api.letsdeel.com/rest/v2
  - url: https://api-staging.letsdeel.com/rest/v2
components:
  schemas:
    EorContractsContractIdOffboardingTerminationPostRequestBodyContentMultipartFormDataSchemaDataReason:
      type: string
      enum:
        - DEEL_COLLECTIONS
        - STATUS_CHANGE
        - RELOCATION
        - COMPENSATION
        - RETIREMENT
        - JOB_ABANDONMENT
        - WORK_RELATED
        - PERSONAL
        - OTHER_OPPORTUNITY
        - NON_RENEWAL
        - PROBATION
        - ASSIGNMENT_ENDED
        - POSITION_ELIMINATION
        - FORCE_REDUCTION
        - DEATH
        - FOR_CAUSE
        - PERFORMANCE
        - MEDICAL
        - PERFORMANCE_ISSUES
        - ATTENDANCE_ISSUES
        - REORGANIZATION_DOWNSIZING_BUDGET_OR_REDUCTION_OF_WORKFORCE
        - ROLE_BECAME_REDUNDANT_OR_ROLE_CHANGED
        - OFFER_WAS_REVOKED
        - EXITING_THE_MARKET
        - NO_LONGER_WISH_TO_WORK_WITH_DEEL
        - COMPANY_ACQUIRED
        - STEALING
        - MISCONDUCT
        - FALSIFYING
        - HARASSMENT
        - VIOLENCE
        - >-
          REORGANIZATION_DOWNSIZING_BUDGET_OR_REDUCTION_OF_WORKFORCE_OR_ROLE_BECAME_REDUNDANT_OR_ROLE_CHANGED
        - UNAUTHORIZED_ABSENCES_OR_LACK_OF_ATTENDANCE
        - STANDARD_RESELLER_PRACTICE
        - MOVING_EMPLOYEE_TO_INTERNAL_ENTITY
        - MOVING_EMPLOYEE_TO_DEEL_PEO
        - OTHER
      description: Reason why the contract is being terminated
      title: >-
        EorContractsContractIdOffboardingTerminationPostRequestBodyContentMultipartFormDataSchemaDataReason
    EorContractsContractIdOffboardingTerminationPostRequestBodyContentMultipartFormDataSchemaDataUsedTimeOffTrackingType:
      type: string
      enum:
        - ON_PLATFORM
        - OFF_PLATFORM
      description: >-
        Type of time off tracking - whether it's tracked on Deel platform or off
        platform
      title: >-
        EorContractsContractIdOffboardingTerminationPostRequestBodyContentMultipartFormDataSchemaDataUsedTimeOffTrackingType
    EorContractsContractIdOffboardingTerminationPostRequestBodyContentMultipartFormDataSchemaDataUsedTimeOffOffPlatformUsedTimeOffEntitlementsItems:
      type: object
      properties:
        used:
          type: number
          format: double
          description: Amount of time off used in the period
        tracking_period:
          type: string
          format: date
          description: Start date of the tracking period
        tracking_period_end_date:
          type: string
          format: date
          description: End date of the tracking period
      required:
        - used
        - tracking_period
        - tracking_period_end_date
      title: >-
        EorContractsContractIdOffboardingTerminationPostRequestBodyContentMultipartFormDataSchemaDataUsedTimeOffOffPlatformUsedTimeOffEntitlementsItems
    EorContractsContractIdOffboardingTerminationPostRequestBodyContentMultipartFormDataSchemaDataUsedTimeOffOffPlatformUsedTimeOffEntitlementUnit:
      type: string
      enum:
        - BUSINESS_DAY
        - CALENDAR_DAY
        - HOUR
        - WEEK
        - MONTH
        - YEAR
      description: Unit of measurement for the time off entitlements
      title: >-
        EorContractsContractIdOffboardingTerminationPostRequestBodyContentMultipartFormDataSchemaDataUsedTimeOffOffPlatformUsedTimeOffEntitlementUnit
    EorContractsContractIdOffboardingTerminationPostRequestBodyContentMultipartFormDataSchemaDataUsedTimeOffOffPlatformUsedTimeOff:
      type: object
      properties:
        entitlements:
          type: array
          items:
            $ref: >-
              #/components/schemas/EorContractsContractIdOffboardingTerminationPostRequestBodyContentMultipartFormDataSchemaDataUsedTimeOffOffPlatformUsedTimeOffEntitlementsItems
          description: Array of time off entitlements for different tracking periods
        total_scheduled:
          type: number
          format: double
          description: Total amount of time off scheduled until the end date
        entitlement_unit:
          $ref: >-
            #/components/schemas/EorContractsContractIdOffboardingTerminationPostRequestBodyContentMultipartFormDataSchemaDataUsedTimeOffOffPlatformUsedTimeOffEntitlementUnit
          description: Unit of measurement for the time off entitlements
      required:
        - entitlements
        - total_scheduled
        - entitlement_unit
      description: Required when tracking_type is OFF_PLATFORM, null otherwise
      title: >-
        EorContractsContractIdOffboardingTerminationPostRequestBodyContentMultipartFormDataSchemaDataUsedTimeOffOffPlatformUsedTimeOff
    EorContractsContractIdOffboardingTerminationPostRequestBodyContentMultipartFormDataSchemaDataUsedTimeOff:
      type: object
      properties:
        tracking_type:
          $ref: >-
            #/components/schemas/EorContractsContractIdOffboardingTerminationPostRequestBodyContentMultipartFormDataSchemaDataUsedTimeOffTrackingType
          description: >-
            Type of time off tracking - whether it's tracked on Deel platform or
            off platform
        off_platform_used_time_off:
          oneOf:
            - $ref: >-
                #/components/schemas/EorContractsContractIdOffboardingTerminationPostRequestBodyContentMultipartFormDataSchemaDataUsedTimeOffOffPlatformUsedTimeOff
            - type: 'null'
          description: Required when tracking_type is OFF_PLATFORM, null otherwise
      title: >-
        EorContractsContractIdOffboardingTerminationPostRequestBodyContentMultipartFormDataSchemaDataUsedTimeOff
    EorContractsContractIdOffboardingTerminationPostRequestBodyContentMultipartFormDataSchemaDataSeveranceType:
      type: string
      enum:
        - DAYS
        - WEEKS
        - MONTHS
        - CASH
      description: The type of severance selected by the client. It's an optional field
      title: >-
        EorContractsContractIdOffboardingTerminationPostRequestBodyContentMultipartFormDataSchemaDataSeveranceType
    EorContractsContractIdOffboardingTerminationPostRequestBodyContentMultipartFormDataSchemaDataAdditionalReason:
      type: string
      enum:
        - DISSATISFIED_WITH_DEEL_SERVICE
        - DISSATISFIED_WITH_DEEL_PRICING
        - DISSATISFIED_WITH_DEEL_PRODUCT
      description: >-
        An additional reason can be provided in case the reason selected is
        NO_LONGER_WISH_TO_WORK_WITH_DEEL
      title: >-
        EorContractsContractIdOffboardingTerminationPostRequestBodyContentMultipartFormDataSchemaDataAdditionalReason
    EorContractsContractIdOffboardingTerminationPostRequestBodyContentMultipartFormDataSchemaDataEligibleForRehire:
      type: string
      enum:
        - 'YES'
        - 'NO'
        - DONT_KNOW
      description: >-
        Parameter to inform whether it would be possible for the client to hire
        the employee again
      title: >-
        EorContractsContractIdOffboardingTerminationPostRequestBodyContentMultipartFormDataSchemaDataEligibleForRehire
    EorContractsContractIdOffboardingTerminationPostRequestBodyContentMultipartFormDataSchemaDataRequiredInformationItems:
      type: object
      properties:
        answer:
          type:
            - boolean
            - 'null'
          description: The answer to the question
        question:
          type: string
          description: The question to be answered
      required:
        - answer
        - question
      title: >-
        EorContractsContractIdOffboardingTerminationPostRequestBodyContentMultipartFormDataSchemaDataRequiredInformationItems
    EorContractsContractIdOffboardingTerminationPostRequestBodyContentMultipartFormDataSchemaData:
      type: object
      properties:
        reason:
          $ref: >-
            #/components/schemas/EorContractsContractIdOffboardingTerminationPostRequestBodyContentMultipartFormDataSchemaDataReason
          description: Reason why the contract is being terminated
        attachments:
          type: string
          format: binary
          description: >-
            This field allows for uploading multiple files at once. Attach any
            document that is important for the request to terminate the
            contract. Includes common image formats (JPG, JPEG, PNG, HEIC) and
            PDF documents.
        is_sensitive:
          type: boolean
          description: >-
            Defines whether the termination is sensitive. In this case, only the
            person requesting the termination will be able to view the
            termination, receive emails or notifications.
        reason_detail:
          type: string
          description: >-
            Field to better explain how communication with the employee will be
            and/or their reaction to the communication, or other necessary
            information
        used_time_off:
          $ref: >-
            #/components/schemas/EorContractsContractIdOffboardingTerminationPostRequestBodyContentMultipartFormDataSchemaDataUsedTimeOff
        severance_type:
          $ref: >-
            #/components/schemas/EorContractsContractIdOffboardingTerminationPostRequestBodyContentMultipartFormDataSchemaDataSeveranceType
          description: The type of severance selected by the client. It's an optional field
        desired_end_date:
          type: string
          format: date
          description: >-
            The desired end date of the contract. If the date is not provided,
            Deel HRX team will select the nearest possible date.
        severance_amount:
          type: integer
          description: The amount of severance needed
        additional_reason:
          oneOf:
            - $ref: >-
                #/components/schemas/EorContractsContractIdOffboardingTerminationPostRequestBodyContentMultipartFormDataSchemaDataAdditionalReason
            - type: 'null'
          description: >-
            An additional reason can be provided in case the reason selected is
            NO_LONGER_WISH_TO_WORK_WITH_DEEL
        termination_notes:
          type: array
          items:
            type: string
          description: >-
            Additional notes can be provided regarding the termination for Deel,
            like questions and doubts
        eligible_for_rehire:
          oneOf:
            - $ref: >-
                #/components/schemas/EorContractsContractIdOffboardingTerminationPostRequestBodyContentMultipartFormDataSchemaDataEligibleForRehire
            - type: 'null'
          description: >-
            Parameter to inform whether it would be possible for the client to
            hire the employee again
        is_employee_notified:
          type: boolean
          description: >-
            Defines if employee was informed by client or not before the
            termination
        required_information:
          type: array
          items:
            $ref: >-
              #/components/schemas/EorContractsContractIdOffboardingTerminationPostRequestBodyContentMultipartFormDataSchemaDataRequiredInformationItems
          description: >-
            For some countries some data is needed to help to process the
            termination. The questions comes from another endpoint to get the
            required information. See GET
            /eor/:oid/offboarding/required-information to get the questions.
        termination_impact_id:
          type: string
          format: uuid
          description: Termination impact data if there is some configured on HR module
        employee_notification_detail:
          type:
            - string
            - 'null'
          description: >-
            If it's an termination contract ending and employee was already
            informed, should detail the notification to the employee
        additional_supporting_documents:
          type: string
          format: binary
          description: >-
            This field allows for uploading multiple files at once. Any proof
            such as correspondence, documentation of previous warnings or
            attendance records for the reason select above. Includes common
            image formats (JPG, JPEG, PNG, HEIC) and PDF documents.
      required:
        - reason
        - reason_detail
        - used_time_off
        - is_employee_notified
      title: >-
        EorContractsContractIdOffboardingTerminationPostRequestBodyContentMultipartFormDataSchemaData
    EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataDocumentsSupportingItems:
      type: object
      properties:
        id:
          type: string
          description: The unique identifier of the file
        name:
          type: string
          description: The name of the file
        type:
          type: string
          description: The type/extension of the file
        created_at:
          type: string
          format: date-time
          description: The date and time the file was created
        updated_at:
          type: string
          format: date-time
          description: The date and time the file was updated
        is_additional_supporting_document:
          type: boolean
          description: >-
            Indicates if this is an additional supporting document added after
            the initial submission
      required:
        - id
        - name
        - type
        - created_at
        - updated_at
        - is_additional_supporting_document
      title: >-
        EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataDocumentsSupportingItems
    EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataDocumentsOffboardingItemsFilesItems:
      type: object
      properties:
        id:
          type: string
          description: The unique identifier of the file
        name:
          type: string
          description: The name of the file
        type:
          type: string
          description: The type/extension of the file
        created_at:
          type: string
          format: date-time
          description: The date and time the file was created
        updated_at:
          type: string
          format: date-time
          description: The date and time the file was updated
      required:
        - id
        - name
        - type
        - created_at
      title: >-
        EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataDocumentsOffboardingItemsFilesItems
    EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataDocumentsOffboardingItemsStatus:
      type: string
      enum:
        - AWAITING_REVIEW
        - AWAITING_FEEDBACK
        - FEEDBACK_PROVIDED
        - APPROVED
        - CHANGES_REQUESTED_BY_CLIENT
        - CHANGES_REQUESTED_BY_EMPLOYEE
        - WAIVED_REVIEW
        - NOT_RESPONDED
        - CANCELLED
      description: The current status of the document review
      title: >-
        EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataDocumentsOffboardingItemsStatus
    EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataDocumentsOffboardingItemsReviewerType:
      type: string
      enum:
        - CLIENT
        - EMPLOYEE
      description: The type of reviewer for this document
      title: >-
        EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataDocumentsOffboardingItemsReviewerType
    EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataDocumentsOffboardingItems:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: The unique identifier of the document set shared with the employee.
        files:
          type: array
          items:
            $ref: >-
              #/components/schemas/EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataDocumentsOffboardingItemsFilesItems
        status:
          $ref: >-
            #/components/schemas/EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataDocumentsOffboardingItemsStatus
          description: The current status of the document review
        created_at:
          type: string
          format: date-time
          description: The date and time the document set was created
        updated_at:
          type: string
          format: date-time
          description: The date and time the document set was updated
        reviewed_at:
          type:
            - string
            - 'null'
          format: date-time
          description: The date and time when the document was reviewed
        reviewed_by:
          type:
            - string
            - 'null'
          description: >-
            The name of the reviewer for this document. If the reviewer is not
            an employee, it will be the name of the client
        reviewer_type:
          $ref: >-
            #/components/schemas/EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataDocumentsOffboardingItemsReviewerType
          description: The type of reviewer for this document
        reviewer_feedback:
          type:
            - string
            - 'null'
          description: Feedback provided by the reviewer
        notification_instructions:
          type:
            - string
            - 'null'
          description: HTML instructions for the reviewer notification
        is_employee_notification_required:
          type: boolean
          description: >-
            Indicates if the employee should be notified about this document
            review
      required:
        - files
        - status
        - reviewer_type
        - is_employee_notification_required
      title: >-
        EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataDocumentsOffboardingItems
    EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataDocuments:
      type: object
      properties:
        supporting:
          type: array
          items:
            $ref: >-
              #/components/schemas/EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataDocumentsSupportingItems
        offboarding:
          type: array
          items:
            $ref: >-
              #/components/schemas/EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataDocumentsOffboardingItems
          description: Document set shared that requires client or employee review
      required:
        - supporting
        - offboarding
      description: >-
        Document management structure for termination workflow including review
        processes and supporting documents
      title: >-
        EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataDocuments
    EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataRequestDataReason:
      type: string
      enum:
        - STATUS_CHANGE
        - RELOCATION
        - COMPENSATION
        - RETIREMENT
        - JOB_ABANDONMENT
        - WORK_RELATED
        - PERSONAL
        - OTHER_OPPORTUNITY
        - NON_RENEWAL
        - PROBATION
        - ASSIGNMENT_ENDED
        - POSITION_ELIMINATION
        - FORCE_REDUCTION
        - DEATH
        - FOR_CAUSE
        - PERFORMANCE
        - MEDICAL
        - PERFORMANCE_ISSUES
        - ATTENDANCE_ISSUES
        - REORGANIZATION_DOWNSIZING_BUDGET_OR_REDUCTION_OF_WORKFORCE
        - ROLE_BECAME_REDUNDANT_OR_ROLE_CHANGED
        - OFFER_WAS_REVOKED
        - EXITING_THE_MARKET
        - NO_LONGER_WISH_TO_WORK_WITH_DEEL
        - COMPANY_ACQUIRED
        - STEALING
        - MISCONDUCT
        - FALSIFYING
        - HARASSMENT
        - VIOLENCE
        - >-
          REORGANIZATION_DOWNSIZING_BUDGET_OR_REDUCTION_OF_WORKFORCE_OR_ROLE_BECAME_REDUNDANT_OR_ROLE_CHANGED
        - UNAUTHORIZED_ABSENCES_OR_LACK_OF_ATTENDANCE
        - STANDARD_RESELLER_PRACTICE
        - MOVING_EMPLOYEE_TO_INTERNAL_ENTITY
        - MOVING_EMPLOYEE_TO_DEEL_PEO
        - OTHER
      description: The reason for the termination
      title: >-
        EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataRequestDataReason
    EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataRequestDataUsedTimeOffTimeOffsItemsUnit:
      type: string
      enum:
        - BUSINESS_DAY
        - CALENDAR_DAY
        - HOUR
      description: The unit of measurement for time off tracking
      title: >-
        EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataRequestDataUsedTimeOffTimeOffsItemsUnit
    EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataRequestDataUsedTimeOffTimeOffsItemsTrackingPeriodsItems:
      type: object
      properties:
        used:
          type: number
          format: double
          description: The amount of time off used in this tracking period
        end_date:
          type: string
          format: date-time
          description: The end date of the tracking period
        start_date:
          type: string
          format: date-time
          description: The start date of the tracking period
      required:
        - used
        - end_date
        - start_date
      title: >-
        EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataRequestDataUsedTimeOffTimeOffsItemsTrackingPeriodsItems
    EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataRequestDataUsedTimeOffTimeOffsItems:
      type: object
      properties:
        unit:
          $ref: >-
            #/components/schemas/EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataRequestDataUsedTimeOffTimeOffsItemsUnit
          description: The unit of measurement for time off tracking
        policy_type:
          type: string
          description: The type of time-off policy
        tracking_periods:
          type: array
          items:
            $ref: >-
              #/components/schemas/EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataRequestDataUsedTimeOffTimeOffsItemsTrackingPeriodsItems
        scheduled_until_end_date:
          type: number
          format: double
          description: >-
            The amount of time off scheduled until the end date of the current
            tracking period
      required:
        - unit
        - policy_type
        - tracking_periods
        - scheduled_until_end_date
      title: >-
        EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataRequestDataUsedTimeOffTimeOffsItems
    EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataRequestDataUsedTimeOffAdditionalDetails:
      type: object
      properties:
        notes:
          type:
            - string
            - 'null'
          description: Additional notes or comments about the time-off data
        updated_by:
          type:
            - string
            - 'null'
          description: The person or system that last updated the time-off data
        last_updated_at:
          type:
            - string
            - 'null'
          format: date-time
          description: The date and time when the time-off data was last updated
      title: >-
        EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataRequestDataUsedTimeOffAdditionalDetails
    EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataRequestDataUsedTimeOff:
      type: object
      properties:
        time_offs:
          type: array
          items:
            $ref: >-
              #/components/schemas/EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataRequestDataUsedTimeOffTimeOffsItems
        additional_details:
          oneOf:
            - $ref: >-
                #/components/schemas/EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataRequestDataUsedTimeOffAdditionalDetails
            - type: 'null'
        is_deel_pto_confirmed:
          type: boolean
          description: >-
            Indicates whether the PTO allocation has been confirmed by Deel's
            system
      required:
        - time_offs
        - is_deel_pto_confirmed
      description: Time-off usage data including policy information and tracking periods
      title: >-
        EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataRequestDataUsedTimeOff
    EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataRequestDataEligibleForRehire:
      type: string
      enum:
        - 'YES'
        - 'NO'
        - DONT_KNOW
      description: >-
        Parameter to inform whether it would be possible for the client to hire
        the employee again
      title: >-
        EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataRequestDataEligibleForRehire
    EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataRequestData:
      type: object
      properties:
        reason:
          $ref: >-
            #/components/schemas/EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataRequestDataReason
          description: The reason for the termination
        end_date:
          type:
            - string
            - 'null'
          format: date-time
          description: The definitive contract end date
        reason_detail:
          type:
            - string
            - 'null'
          description: Optional field to describe the reason behind the resignation request
        used_time_off:
          $ref: >-
            #/components/schemas/EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataRequestDataUsedTimeOff
          description: >-
            Time-off usage data including policy information and tracking
            periods
        desired_end_date:
          type:
            - string
            - 'null'
          format: date
          description: >-
            The desired end date. If the date is not provided, it will be
            selected by HRX the closest date possible
        eligible_for_rehire:
          oneOf:
            - $ref: >-
                #/components/schemas/EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataRequestDataEligibleForRehire
            - type: 'null'
          description: >-
            Parameter to inform whether it would be possible for the client to
            hire the employee again
        eligible_for_rehire_reason:
          type:
            - string
            - 'null'
          description: Describe if the option DONT_KNOW was selected on eligible_for_rehire
      title: >-
        EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataRequestData
    EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaData:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: The unique identifier of the offboarding request
        end_date:
          type:
            - string
            - 'null'
          format: date-time
          description: The definitive contract end date
        documents:
          $ref: >-
            #/components/schemas/EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataDocuments
          description: >-
            Document management structure for termination workflow including
            review processes and supporting documents
        created_at:
          type: string
          format: date-time
          description: The date and time the offboarding request was created
        updated_at:
          type: string
          format: date-time
          description: The date and time the offboarding request was updated
        contract_id:
          type: string
          description: The unique identifier of the employee contract.
        is_sensitive:
          type: boolean
          description: >-
            Indicates if the offboarding request is sensitive. This is used to
            restrict access to the request only to the requester and the HRX
            team.
        request_data:
          oneOf:
            - $ref: >-
                #/components/schemas/EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaDataRequestData
            - type: 'null'
        desired_end_date:
          type:
            - string
            - 'null'
          format: date-time
          description: >-
            The desired end date. If the date is not provided, it will be
            selected by HRX the closest date possible
      title: >-
        EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaData
    eor-terminations_createOffboardingTermination_Response_201:
      type: object
      properties:
        data:
          $ref: >-
            #/components/schemas/EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaData
      required:
        - data
      title: eor-terminations_createOffboardingTermination_Response_201
    EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaErrorsItems:
      type: object
      properties:
        code:
          type: string
          description: Error code of the handler which produced the returned error
        field:
          type: string
          description: The field name where error occurred (null for server errors)
        message:
          type: string
          description: Description of the returned error
      title: >-
        EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaErrorsItems
    InitiateEorContractTerminationRequestRequestBadRequestError:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: >-
              #/components/schemas/EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaErrorsItems
      title: InitiateEorContractTerminationRequestRequestBadRequestError
    InitiateEorContractTerminationRequestRequestUnauthorizedError:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: >-
              #/components/schemas/EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaErrorsItems
      title: InitiateEorContractTerminationRequestRequestUnauthorizedError
    InitiateEorContractTerminationRequestRequestForbiddenError:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: >-
              #/components/schemas/EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaErrorsItems
      title: InitiateEorContractTerminationRequestRequestForbiddenError
    ApiErrorRequest:
      type: object
      properties:
        method:
          type: string
          description: The HTTP method of the failed request
        url:
          type: string
          description: The relative URL of the failed request
        status:
          type: number
          format: double
          description: The status code of the response
        api_req_id:
          type: string
          description: The request ID of the failed request
        docs:
          type: string
          description: >-
            A link to the official documentation for the requested endpoint
            resource
        source:
          type: string
          description: The source handler which produced the returned error
        code:
          type: number
          format: double
          description: The code of the source handler which produced the returned error
      title: ApiErrorRequest
    ApiError:
      type: object
      properties:
        message:
          type: string
          description: A description of the returned error
        path:
          type: string
          description: The JSON path where input validation failed
      title: ApiError
    ApiErrorContainer:
      type: object
      properties:
        request:
          $ref: '#/components/schemas/ApiErrorRequest'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ApiError'
      title: ApiErrorContainer
    InitiateEorContractTerminationRequestRequestInternalServerError:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: >-
              #/components/schemas/EorContractsContractIdOffboardingTerminationPostResponsesContentApplicationJsonSchemaErrorsItems
      title: InitiateEorContractTerminationRequestRequestInternalServerError
  securitySchemes:
    deelToken:
      type: http
      scheme: bearer
      description: >
        ## Authentication

        The Deel API uses bearer tokens to authenticate requests. All API calls
        must be made over HTTPS — calls over plain HTTP or without
        authentication will fail.


        ```curl

        curl -X GET 'https://api.letsdeel.com/rest/v2/contracts' \
          -H 'Authorization: Bearer YOUR-TOKEN-HERE'
        ```


        [Learn more about authentication](/api/authentication)
    oauth2:
      type: http
      scheme: bearer
      description: >-
        Standard OAuth2 security scheme based on
        https://swagger.io/docs/specification/authentication/

```

## SDK Code Examples

```python
import requests

url = "https://api.letsdeel.com/rest/v2/eor/contracts/5B74FnLM/offboarding/termination"

payload = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"data\"\r\n\r\n{\n  \"reason\": \"PERFORMANCE_ISSUES\",\n  \"reason_detail\": \"This decision to terminate employment is based on an unsatisfactory level of job performance despite documented efforts to provide support and improvement opportunities.\",\n  \"used_time_off\": {},\n  \"is_employee_notified\": false\n}\r\n-----011000010111000001101001--\r\n"
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "multipart/form-data; boundary=---011000010111000001101001"
}

response = requests.post(url, data=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.letsdeel.com/rest/v2/eor/contracts/5B74FnLM/offboarding/termination';
const form = new FormData();
form.append('data', '{
  "reason": "PERFORMANCE_ISSUES",
  "reason_detail": "This decision to terminate employment is based on an unsatisfactory level of job performance despite documented efforts to provide support and improvement opportunities.",
  "used_time_off": {},
  "is_employee_notified": false
}');

const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};

options.body = form;

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.letsdeel.com/rest/v2/eor/contracts/5B74FnLM/offboarding/termination"

	payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"data\"\r\n\r\n{\n  \"reason\": \"PERFORMANCE_ISSUES\",\n  \"reason_detail\": \"This decision to terminate employment is based on an unsatisfactory level of job performance despite documented efforts to provide support and improvement opportunities.\",\n  \"used_time_off\": {},\n  \"is_employee_notified\": false\n}\r\n-----011000010111000001101001--\r\n")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.letsdeel.com/rest/v2/eor/contracts/5B74FnLM/offboarding/termination")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"data\"\r\n\r\n{\n  \"reason\": \"PERFORMANCE_ISSUES\",\n  \"reason_detail\": \"This decision to terminate employment is based on an unsatisfactory level of job performance despite documented efforts to provide support and improvement opportunities.\",\n  \"used_time_off\": {},\n  \"is_employee_notified\": false\n}\r\n-----011000010111000001101001--\r\n"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.letsdeel.com/rest/v2/eor/contracts/5B74FnLM/offboarding/termination")
  .header("Authorization", "Bearer <token>")
  .body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"data\"\r\n\r\n{\n  \"reason\": \"PERFORMANCE_ISSUES\",\n  \"reason_detail\": \"This decision to terminate employment is based on an unsatisfactory level of job performance despite documented efforts to provide support and improvement opportunities.\",\n  \"used_time_off\": {},\n  \"is_employee_notified\": false\n}\r\n-----011000010111000001101001--\r\n")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.letsdeel.com/rest/v2/eor/contracts/5B74FnLM/offboarding/termination', [
  'multipart' => [
    [
        'name' => 'data',
        'contents' => '{
  "reason": "PERFORMANCE_ISSUES",
  "reason_detail": "This decision to terminate employment is based on an unsatisfactory level of job performance despite documented efforts to provide support and improvement opportunities.",
  "used_time_off": {},
  "is_employee_notified": false
}'
    ]
  ]
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.letsdeel.com/rest/v2/eor/contracts/5B74FnLM/offboarding/termination");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer <token>");
request.AddParameter("undefined", "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"data\"\r\n\r\n{\n  \"reason\": \"PERFORMANCE_ISSUES\",\n  \"reason_detail\": \"This decision to terminate employment is based on an unsatisfactory level of job performance despite documented efforts to provide support and improvement opportunities.\",\n  \"used_time_off\": {},\n  \"is_employee_notified\": false\n}\r\n-----011000010111000001101001--\r\n", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Authorization": "Bearer <token>"]
let parameters = [
  [
    "name": "data",
    "value": "{
  \"reason\": \"PERFORMANCE_ISSUES\",
  \"reason_detail\": \"This decision to terminate employment is based on an unsatisfactory level of job performance despite documented efforts to provide support and improvement opportunities.\",
  \"used_time_off\": {},
  \"is_employee_notified\": false
}"
  ]
]

let boundary = "---011000010111000001101001"

var body = ""
var error: NSError? = nil
for param in parameters {
  let paramName = param["name"]!
  body += "--\(boundary)\r\n"
  body += "Content-Disposition:form-data; name=\"\(paramName)\""
  if let filename = param["fileName"] {
    let contentType = param["content-type"]!
    let fileContent = String(contentsOfFile: filename, encoding: String.Encoding.utf8)
    if (error != nil) {
      print(error as Any)
    }
    body += "; filename=\"\(filename)\"\r\n"
    body += "Content-Type: \(contentType)\r\n\r\n"
    body += fileContent
  } else if let paramValue = param["value"] {
    body += "\r\n\r\n\(paramValue)"
  }
}

let request = NSMutableURLRequest(url: NSURL(string: "https://api.letsdeel.com/rest/v2/eor/contracts/5B74FnLM/offboarding/termination")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```