# Request contract resignation

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

Enable clients to initiate a resignation request for an Employee of Record (EOR) contract within their team
 **Token scopes**: `contracts:write`

Reference: https://developer.deel.com/api/eor-worker-endpoints/eor-worker-offboarding/create-employee-resignation

## OpenAPI Specification

```yaml
openapi: 3.1.0
info:
  title: Deel HRIS SCIM API
  version: 1.0.0
paths:
  /eor/contracts/{contract_id}/offboarding/resignation:
    post:
      operationId: create-employee-resignation
      summary: Request contract resignation
      description: >-
        Enable clients to initiate a resignation request for an Employee of
        Record (EOR) contract within their team
         **Token scopes**: `contracts:write`
      tags:
        - subpackage_eorWorkerOffboarding
      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: Resignation request submitted successfully.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/eor-worker-offboarding_createEmployeeResignation_Response_201
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/RequestContractResignationRequestBadRequestError
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/RequestContractResignationRequestUnauthorizedError
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/RequestContractResignationRequestForbiddenError
        '404':
          description: Operation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorContainer'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/RequestContractResignationRequestInternalServerError
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                data:
                  $ref: >-
                    #/components/schemas/EorContractsContractIdOffboardingResignationPostRequestBodyContentMultipartFormDataSchemaData
              required:
                - data
servers:
  - url: https://api.letsdeel.com/rest/v2
  - url: https://api-staging.letsdeel.com/rest/v2
components:
  schemas:
    EorContractsContractIdOffboardingResignationPostRequestBodyContentMultipartFormDataSchemaDataReason:
      type: string
      enum:
        - EMPLOYEE_IS_MOVING_TO_ANOTHER_COUNTRY
        - MOVING_EMPLOYEE_TO_INTERNAL_ENTITY
        - MOVING_EMPLOYEE_TO_DEEL_PEO
        - EMPLOYEE_FOUND_ANOTHER_JOB
        - EMPLOYEE_NOT_HAPPY_WITH_BENEFITS
        - EMPLOYEE_NOT_HAPPY_WITH_SALARY
        - EMPLOYEE_NOT_HAPPY_WITH_THE_ROLE
        - EMPLOYEE_NOT_HAPPY_WITH_COMPANY_CULTURE
        - EMPLOYEE_NOT_HAPPY_WITH_DEEL
        - EMPLOYEE_PROJECT_ENDED
        - EMPLOYEE_SWITCHING_TO_OTHER_EOR_PROVIDER
        - EMPLOYEE_LEFT_ROLE_FOR_PERSONAL_MATTERS
        - EMPLOYEE_MOVING_FROM_EOR_TO_CONTRACTOR_OR_FREELANCE
        - WORKER_TYPE_CHANGE
        - DEEL_COLLECTIONS
        - EMPLOYEE_DID_NOT_TAKE_THE_OFFER
        - EMPLOYEE_PROVIDED_NO_REASON
        - OTHER_BUSINESS_REASONS
      description: Reason why the contract is being terminated
      title: >-
        EorContractsContractIdOffboardingResignationPostRequestBodyContentMultipartFormDataSchemaDataReason
    EorContractsContractIdOffboardingResignationPostRequestBodyContentMultipartFormDataSchemaDataUsedTimeOffTrackingType:
      type: string
      enum:
        - ON_PLATFORM
        - OFF_PLATFORM
      description: >-
        Type of time off tracking - whether it's tracked on Deel platform or off
        platform
      title: >-
        EorContractsContractIdOffboardingResignationPostRequestBodyContentMultipartFormDataSchemaDataUsedTimeOffTrackingType
    EorContractsContractIdOffboardingResignationPostRequestBodyContentMultipartFormDataSchemaDataUsedTimeOffOffPlatformUsedTimeOffEntitlementsItems:
      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: >-
        EorContractsContractIdOffboardingResignationPostRequestBodyContentMultipartFormDataSchemaDataUsedTimeOffOffPlatformUsedTimeOffEntitlementsItems
    EorContractsContractIdOffboardingResignationPostRequestBodyContentMultipartFormDataSchemaDataUsedTimeOffOffPlatformUsedTimeOffEntitlementUnit:
      type: string
      enum:
        - BUSINESS_DAY
        - CALENDAR_DAY
        - HOUR
        - WEEK
        - MONTH
        - YEAR
      description: Unit of measurement for the time off entitlements
      title: >-
        EorContractsContractIdOffboardingResignationPostRequestBodyContentMultipartFormDataSchemaDataUsedTimeOffOffPlatformUsedTimeOffEntitlementUnit
    EorContractsContractIdOffboardingResignationPostRequestBodyContentMultipartFormDataSchemaDataUsedTimeOffOffPlatformUsedTimeOff:
      type: object
      properties:
        entitlements:
          type: array
          items:
            $ref: >-
              #/components/schemas/EorContractsContractIdOffboardingResignationPostRequestBodyContentMultipartFormDataSchemaDataUsedTimeOffOffPlatformUsedTimeOffEntitlementsItems
          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/EorContractsContractIdOffboardingResignationPostRequestBodyContentMultipartFormDataSchemaDataUsedTimeOffOffPlatformUsedTimeOffEntitlementUnit
          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: >-
        EorContractsContractIdOffboardingResignationPostRequestBodyContentMultipartFormDataSchemaDataUsedTimeOffOffPlatformUsedTimeOff
    EorContractsContractIdOffboardingResignationPostRequestBodyContentMultipartFormDataSchemaDataUsedTimeOff:
      type: object
      properties:
        tracking_type:
          $ref: >-
            #/components/schemas/EorContractsContractIdOffboardingResignationPostRequestBodyContentMultipartFormDataSchemaDataUsedTimeOffTrackingType
          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/EorContractsContractIdOffboardingResignationPostRequestBodyContentMultipartFormDataSchemaDataUsedTimeOffOffPlatformUsedTimeOff
            - type: 'null'
          description: Required when tracking_type is OFF_PLATFORM, null otherwise
      title: >-
        EorContractsContractIdOffboardingResignationPostRequestBodyContentMultipartFormDataSchemaDataUsedTimeOff
    EorContractsContractIdOffboardingResignationPostRequestBodyContentMultipartFormDataSchemaDataSeveranceType:
      type: string
      enum:
        - DAYS
        - WEEKS
        - MONTHS
        - CASH
      description: The type of severance selected by the client. It's an optional field
      title: >-
        EorContractsContractIdOffboardingResignationPostRequestBodyContentMultipartFormDataSchemaDataSeveranceType
    EorContractsContractIdOffboardingResignationPostRequestBodyContentMultipartFormDataSchemaDataAdditionalReason:
      type: string
      enum:
        - MOVING_TO_INTERNAL_ENTITY_WITH_DEEL_GLOBAL_PAYROLL
        - MOVING_TO_INTERNAL_ENTITY_WITH_OTHER_PROVIDER
      description: >-
        An additional reason can be provided in case the reason selected is
        MOVING_EMPLOYEE_TO_INTERNAL_ENTITY
      title: >-
        EorContractsContractIdOffboardingResignationPostRequestBodyContentMultipartFormDataSchemaDataAdditionalReason
    EorContractsContractIdOffboardingResignationPostRequestBodyContentMultipartFormDataSchemaDataEligibleForRehire:
      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: >-
        EorContractsContractIdOffboardingResignationPostRequestBodyContentMultipartFormDataSchemaDataEligibleForRehire
    EorContractsContractIdOffboardingResignationPostRequestBodyContentMultipartFormDataSchemaData:
      type: object
      properties:
        reason:
          $ref: >-
            #/components/schemas/EorContractsContractIdOffboardingResignationPostRequestBodyContentMultipartFormDataSchemaDataReason
          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: Optional field to describe the reason behind the resignation request
        used_time_off:
          $ref: >-
            #/components/schemas/EorContractsContractIdOffboardingResignationPostRequestBodyContentMultipartFormDataSchemaDataUsedTimeOff
        severance_type:
          $ref: >-
            #/components/schemas/EorContractsContractIdOffboardingResignationPostRequestBodyContentMultipartFormDataSchemaDataSeveranceType
          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. If the date is not provided, it will be
            selected by HRX the closest date possible
        severance_amount:
          type: number
          format: double
          description: The amount of severance needed
        additional_reason:
          oneOf:
            - $ref: >-
                #/components/schemas/EorContractsContractIdOffboardingResignationPostRequestBodyContentMultipartFormDataSchemaDataAdditionalReason
            - type: 'null'
          description: >-
            An additional reason can be provided in case the reason selected is
            MOVING_EMPLOYEE_TO_INTERNAL_ENTITY
        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/EorContractsContractIdOffboardingResignationPostRequestBodyContentMultipartFormDataSchemaDataEligibleForRehire
            - 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
        is_employee_staying_with_deel:
          type:
            - boolean
            - 'null'
          description: Defines if employee will keep using Deel as provider
      required:
        - reason
        - used_time_off
        - is_employee_staying_with_deel
      title: >-
        EorContractsContractIdOffboardingResignationPostRequestBodyContentMultipartFormDataSchemaData
    EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataDocumentsSupportingItems:
      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: >-
        EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataDocumentsSupportingItems
    EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataDocumentsOffboardingItemsFilesItems:
      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: >-
        EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataDocumentsOffboardingItemsFilesItems
    EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataDocumentsOffboardingItemsStatus:
      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: >-
        EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataDocumentsOffboardingItemsStatus
    EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataDocumentsOffboardingItemsReviewerType:
      type: string
      enum:
        - CLIENT
        - EMPLOYEE
      description: The type of reviewer for this document
      title: >-
        EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataDocumentsOffboardingItemsReviewerType
    EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataDocumentsOffboardingItems:
      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/EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataDocumentsOffboardingItemsFilesItems
        status:
          $ref: >-
            #/components/schemas/EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataDocumentsOffboardingItemsStatus
          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/EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataDocumentsOffboardingItemsReviewerType
          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: >-
        EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataDocumentsOffboardingItems
    EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataDocuments:
      type: object
      properties:
        supporting:
          type: array
          items:
            $ref: >-
              #/components/schemas/EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataDocumentsSupportingItems
        offboarding:
          type: array
          items:
            $ref: >-
              #/components/schemas/EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataDocumentsOffboardingItems
          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: >-
        EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataDocuments
    EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataRequestDataReason:
      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: >-
        EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataRequestDataReason
    EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataRequestDataUsedTimeOffTimeOffsItemsUnit:
      type: string
      enum:
        - BUSINESS_DAY
        - CALENDAR_DAY
        - HOUR
      description: The unit of measurement for time off tracking
      title: >-
        EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataRequestDataUsedTimeOffTimeOffsItemsUnit
    EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataRequestDataUsedTimeOffTimeOffsItemsTrackingPeriodsItems:
      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: >-
        EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataRequestDataUsedTimeOffTimeOffsItemsTrackingPeriodsItems
    EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataRequestDataUsedTimeOffTimeOffsItems:
      type: object
      properties:
        unit:
          $ref: >-
            #/components/schemas/EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataRequestDataUsedTimeOffTimeOffsItemsUnit
          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/EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataRequestDataUsedTimeOffTimeOffsItemsTrackingPeriodsItems
        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: >-
        EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataRequestDataUsedTimeOffTimeOffsItems
    EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataRequestDataUsedTimeOffAdditionalDetails:
      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: >-
        EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataRequestDataUsedTimeOffAdditionalDetails
    EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataRequestDataUsedTimeOff:
      type: object
      properties:
        time_offs:
          type: array
          items:
            $ref: >-
              #/components/schemas/EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataRequestDataUsedTimeOffTimeOffsItems
        additional_details:
          oneOf:
            - $ref: >-
                #/components/schemas/EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataRequestDataUsedTimeOffAdditionalDetails
            - 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: >-
        EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataRequestDataUsedTimeOff
    EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataRequestDataEligibleForRehire:
      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: >-
        EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataRequestDataEligibleForRehire
    EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataRequestData:
      type: object
      properties:
        reason:
          $ref: >-
            #/components/schemas/EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataRequestDataReason
          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/EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataRequestDataUsedTimeOff
          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/EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataRequestDataEligibleForRehire
            - 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: >-
        EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataRequestData
    EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaData:
      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/EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataDocuments
          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/EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaDataRequestData
            - 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: >-
        EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaData
    eor-worker-offboarding_createEmployeeResignation_Response_201:
      type: object
      properties:
        data:
          $ref: >-
            #/components/schemas/EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaData
      required:
        - data
      title: eor-worker-offboarding_createEmployeeResignation_Response_201
    EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaErrorsItems:
      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: >-
        EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaErrorsItems
    RequestContractResignationRequestBadRequestError:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: >-
              #/components/schemas/EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaErrorsItems
      title: RequestContractResignationRequestBadRequestError
    RequestContractResignationRequestUnauthorizedError:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: >-
              #/components/schemas/EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaErrorsItems
      title: RequestContractResignationRequestUnauthorizedError
    RequestContractResignationRequestForbiddenError:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: >-
              #/components/schemas/EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaErrorsItems
      title: RequestContractResignationRequestForbiddenError
    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
    RequestContractResignationRequestInternalServerError:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: >-
              #/components/schemas/EorContractsContractIdOffboardingResignationPostResponsesContentApplicationJsonSchemaErrorsItems
      title: RequestContractResignationRequestInternalServerError
  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/resignation"

payload = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"data\"\r\n\r\n{\n  \"reason\": \"EMPLOYEE_IS_MOVING_TO_ANOTHER_COUNTRY\",\n  \"used_time_off\": {},\n  \"is_employee_staying_with_deel\": 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/resignation';
const form = new FormData();
form.append('data', '{
  "reason": "EMPLOYEE_IS_MOVING_TO_ANOTHER_COUNTRY",
  "used_time_off": {},
  "is_employee_staying_with_deel": 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/resignation"

	payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"data\"\r\n\r\n{\n  \"reason\": \"EMPLOYEE_IS_MOVING_TO_ANOTHER_COUNTRY\",\n  \"used_time_off\": {},\n  \"is_employee_staying_with_deel\": 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/resignation")

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\": \"EMPLOYEE_IS_MOVING_TO_ANOTHER_COUNTRY\",\n  \"used_time_off\": {},\n  \"is_employee_staying_with_deel\": 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/resignation")
  .header("Authorization", "Bearer <token>")
  .body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"data\"\r\n\r\n{\n  \"reason\": \"EMPLOYEE_IS_MOVING_TO_ANOTHER_COUNTRY\",\n  \"used_time_off\": {},\n  \"is_employee_staying_with_deel\": 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/resignation', [
  'multipart' => [
    [
        'name' => 'data',
        'contents' => '{
  "reason": "EMPLOYEE_IS_MOVING_TO_ANOTHER_COUNTRY",
  "used_time_off": {},
  "is_employee_staying_with_deel": 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/resignation");
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\": \"EMPLOYEE_IS_MOVING_TO_ANOTHER_COUNTRY\",\n  \"used_time_off\": {},\n  \"is_employee_staying_with_deel\": 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\": \"EMPLOYEE_IS_MOVING_TO_ANOTHER_COUNTRY\",
  \"used_time_off\": {},
  \"is_employee_staying_with_deel\": 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/resignation")! 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()
```