# Update EOR Contract

PATCH https://api.letsdeel.com/rest/v2/eor/contract/{contract_id}
Content-Type: application/json

This endpoint is used to modify mutable fields of an EOR contract, such as salary, job title, or benefits. It supports partial updates—only include fields that should be updated. Required fields must still be present for validation.
 **Token scopes**: `contracts:write`

Reference: https://developer.deel.com/api/eor-endpoints/eor-contract/update-eor-contract

## OpenAPI Specification

```yaml
openapi: 3.1.0
info:
  title: Deel HRIS SCIM API
  version: 1.0.0
paths:
  /eor/contract/{contract_id}:
    patch:
      operationId: update-eor-contract
      summary: Update EOR Contract
      description: >-
        This endpoint is used to modify mutable fields of an EOR contract, such
        as salary, job title, or benefits. It supports partial updates—only
        include fields that should be updated. Required fields must still be
        present for validation.
         **Token scopes**: `contracts:write`
      tags:
        - subpackage_eorContract
      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:
        '200':
          description: Contract updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/eor-contract_updateEORContract_Response_200
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateEorContractRequestBadRequestError'
        '401':
          description: Operation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorContainer'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateEorContractRequestForbiddenError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateEorContractRequestNotFoundError'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/UpdateEorContractRequestInternalServerError
      requestBody:
        description: Contract update request object
        content:
          application/json:
            schema:
              type: object
              properties:
                data:
                  $ref: >-
                    #/components/schemas/EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaData
              required:
                - data
servers:
  - url: https://api.letsdeel.com/rest/v2
  - url: https://api-staging.letsdeel.com/rest/v2
components:
  schemas:
    EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataScope1:
      type: object
      properties:
        scope_template_id:
          type: string
          format: uuid
          description: Scope template UUID.
        scope_validation_id:
          type: string
          format: uuid
          description: Scope validation UUID.
      title: >-
        EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataScope1
    EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataScope:
      oneOf:
        - type: string
        - $ref: >-
            #/components/schemas/EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataScope1
      title: >-
        EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataScope
    EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataBenefitsItems:
      type: object
      properties:
        plan_id:
          type:
            - string
            - 'null'
          description: Benefit plan ID
        cover_all:
          type: boolean
          description: Indicates if benefit covers all
        provider_id:
          type:
            - string
            - 'null'
          description: Benefit provider ID
        contribution:
          type:
            - number
            - 'null'
          format: double
          description: Contribution amount
        cover_dependents:
          type: boolean
          description: Indicates if benefit covers dependents
      description: Benefit plan details
      title: >-
        EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataBenefitsItems
    EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataTimeOffType:
      type: string
      enum:
        - STANDARD
        - SPECIFIC
        - PRORATED
      description: Type of time off
      title: >-
        EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataTimeOffType
    EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataEmploymentType:
      type: string
      enum:
        - Full-time
        - Part-time
      description: Type of employment
      title: >-
        EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataEmploymentType
    EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataEmployeeAddress:
      type: object
      properties:
        zip:
          type: string
          description: ZIP/Postal code
        city:
          type: string
          description: City of residence
        phone:
          type: string
          description: Phone number
        state:
          type: string
          description: State of residence
        street:
          type: string
          description: Street address
        country:
          type: string
          description: Country of residence (can be country code or name)
        province:
          type: string
          description: Province of residence
        calling_code:
          type: string
          description: Country calling code
      required:
        - city
        - street
        - country
      description: Employee's address information
      title: >-
        EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataEmployeeAddress
    EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataHiringObjective:
      type: string
      enum:
        - EXPANDING_TO_NEW_COUNTRY
        - TEMP_EOR_OPENING_ENTITY
        - ONE_OFF_HIRE
        - CONVERTING_CONTRACTOR
        - OTHER
      description: Objective for hiring
      title: >-
        EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataHiringObjective
    EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataWorkArrangement:
      type: string
      enum:
        - REMOTE
        - ON_SITE_OR_HYBRID
      description: Work arrangement type
      title: >-
        EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataWorkArrangement
    EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataWorkEligibility:
      type: object
      properties:
        key:
          type: string
          description: Unique identifier for the work eligibility document
        file_name:
          type: string
          description: Name of the work eligibility document file
      required:
        - key
        - file_name
      description: Work eligibility documentation
      title: >-
        EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataWorkEligibility
    EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataContractTermType:
      type: string
      enum:
        - DEFINITE
        - INDEFINITE
      description: Type of contract term
      title: >-
        EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataContractTermType
    EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataNoticePeriodType:
      type: string
      enum:
        - STANDARD
        - CUSTOM
      description: Type of notice period
      title: >-
        EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataNoticePeriodType
    EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataReasonForFixedTerm:
      type: string
      enum:
        - SEASONAL_OR_TEMPORARY_WORK
        - PROJECT_BASED_EMPLOYMENT
        - REPLACEMENT_FOR_PERMANENT_STAFF
        - TRIAL_PERIODS_FOR_NEW_ROLES_OR_BUSINESSES
      description: Reason for fixed-term contract
      title: >-
        EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataReasonForFixedTerm
    EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataQuoteAdditionalFieldsEmployeeType:
      type: string
      enum:
        - Employee
        - Manager
      description: Type of employee
      title: >-
        EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataQuoteAdditionalFieldsEmployeeType
    EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataQuoteAdditionalFields:
      type: object
      properties:
        employee_type:
          $ref: >-
            #/components/schemas/EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataQuoteAdditionalFieldsEmployeeType
          description: Type of employee
        qualifications:
          type: string
          description: Required qualifications
        scope_german_translation:
          type: string
          description: German translation of scope
        qualifications_german_translation:
          type: string
          description: German translation of qualifications
      description: Additional quote-specific information
      title: >-
        EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataQuoteAdditionalFields
    EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataSigningBonusPayoutType:
      type: string
      enum:
        - FIRST_CYCLE
        - AFTER_PROBATION
        - AFTER_FIRST_CONTRACT_ANNIVERSARY
      default: FIRST_CYCLE
      description: Determines when the signing bonus will be paid out
      title: >-
        EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataSigningBonusPayoutType
    EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataProbationPeriodTypeForDefinite:
      type: string
      enum:
        - CUSTOM
        - STANDARD
      description: Unit of time for probation period
      title: >-
        EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataProbationPeriodTypeForDefinite
    EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaData:
      type: object
      properties:
        scope:
          $ref: >-
            #/components/schemas/EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataScope
        salary:
          type: number
          format: double
          description: Annual salary amount
        benefits:
          type:
            - array
            - 'null'
          items:
            $ref: >-
              #/components/schemas/EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataBenefitsItems
          description: Array of employee benefits
        currency:
          type: string
          description: Currency code for salary and benefits
        end_date:
          type:
            - string
            - 'null'
          format: date
          description: Employment end date
        holidays:
          type:
            - number
            - 'null'
          format: double
          description: Number of holiday days per year
        is_hourly:
          type:
            - boolean
            - 'null'
          description: Indicates if compensation is hourly
        job_title:
          type: string
          description: Job title (cannot be C-level position)
        work_visa:
          type:
            - boolean
            - 'null'
          description: Indicates if work visa is required
        start_date:
          type: string
          format: date
          description: Employment start date
        employee_id:
          type: string
          description: Employee's unique identifier
        hourly_rate:
          type:
            - number
            - 'null'
          format: double
          description: Hourly rate (required if is_hourly is true)
        is_resubmit:
          type:
            - boolean
            - 'null'
          description: Indicates if this is a resubmission
        schedule_id:
          type:
            - string
            - 'null'
          description: Unique identifier for the employee's work schedule
        seniority_id:
          type: number
          format: double
          description: Seniority level identifier
        work_pension:
          type:
            - boolean
            - 'null'
          description: Indicates if work pension is included
        signing_bonus:
          type:
            - number
            - 'null'
          format: double
          description: Signing bonus amount
        time_off_type:
          $ref: >-
            #/components/schemas/EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataTimeOffType
          description: Type of time off
        employee_email:
          type: string
          format: email
          description: Employee's email address
        seniority_date:
          type: string
          format: date
          description: Employee seniority date
        employment_type:
          $ref: >-
            #/components/schemas/EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataEmploymentType
          description: Type of employment
        sick_leave_days:
          type:
            - number
            - 'null'
          format: double
          description: Number of sick leave days per year
        employee_address:
          $ref: >-
            #/components/schemas/EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataEmployeeAddress
          description: Employee's address information
        employment_state:
          type:
            - string
            - 'null'
          description: State/Province of employment
        hiring_objective:
          $ref: >-
            #/components/schemas/EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataHiringObjective
          description: Objective for hiring
        probation_period:
          type:
            - number
            - 'null'
          format: double
          description: Probation period duration
        work_arrangement:
          oneOf:
            - $ref: >-
                #/components/schemas/EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataWorkArrangement
            - type: 'null'
          description: Work arrangement type
        work_eligibility:
          $ref: >-
            #/components/schemas/EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataWorkEligibility
          description: Work eligibility documentation
        medical_insurance:
          type: boolean
          description: Medical insurance coverage
        contract_term_type:
          $ref: >-
            #/components/schemas/EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataContractTermType
          description: Type of contract term
        employee_last_name:
          type: string
          description: Employee's last name
        employment_country:
          type: string
          description: Country of employment
        notice_period_type:
          $ref: >-
            #/components/schemas/EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataNoticePeriodType
          description: Type of notice period
        employee_first_name:
          type: string
          description: Employee's first name
        work_hours_per_week:
          type: number
          format: double
          description: Working hours per week
        employee_nationality:
          type: string
          description: Employee's nationality
        reason_for_fixed_term:
          oneOf:
            - $ref: >-
                #/components/schemas/EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataReasonForFixedTerm
            - type: 'null'
          description: Reason for fixed-term contract
        quote_additional_fields:
          $ref: >-
            #/components/schemas/EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataQuoteAdditionalFields
          description: Additional quote-specific information
        signing_bonus_payout_type:
          oneOf:
            - $ref: >-
                #/components/schemas/EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataSigningBonusPayoutType
            - type: 'null'
          description: Determines when the signing bonus will be paid out
        hiring_objective_extra_info:
          type:
            - string
            - 'null'
          description: Additional information about hiring objective
        notice_period_after_probation:
          type: number
          format: double
          description: Notice period after probation (days)
        notice_period_during_probation:
          type: number
          format: double
          description: Notice period during probation (days)
        is_auto_quote_validation_passed:
          type:
            - boolean
            - 'null'
          description: Auto quote validation status
        probation_period_type_for_definite:
          $ref: >-
            #/components/schemas/EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaDataProbationPeriodTypeForDefinite
          description: Unit of time for probation period
        allow_consultant_equipment_reimbursement:
          type: boolean
          description: Allow equipment reimbursement for consultants
      required:
        - salary
        - job_title
        - start_date
        - employee_email
        - employment_type
        - employee_last_name
        - employment_country
        - employee_first_name
      title: EorContractContractIdPatchRequestBodyContentApplicationJsonSchemaData
    EorContractContractIdPatchResponsesContentApplicationJsonSchemaStatus:
      type: string
      enum:
        - new
        - under_review
        - waiting_for_client_sign
        - waiting_for_eor_sign
        - waiting_for_employee_sign
        - awaiting_deposit_payment
        - rejected
      description: Current status of the contract
      title: EorContractContractIdPatchResponsesContentApplicationJsonSchemaStatus
    eor-contract_updateEORContract_Response_200:
      type: object
      properties:
        oid:
          type: string
          description: The unique identifier of the employee contract.
        status:
          $ref: >-
            #/components/schemas/EorContractContractIdPatchResponsesContentApplicationJsonSchemaStatus
          description: Current status of the contract
        scope_of_work:
          type: string
          description: Scope of work description.
      required:
        - oid
        - status
      title: eor-contract_updateEORContract_Response_200
    EorContractContractIdPatchResponsesContentApplicationJsonSchemaError:
      type: object
      properties:
        code:
          type: string
          description: Error code identifier
        status:
          type: integer
          description: HTTP status code
        message:
          type: string
          description: Error message details
      title: EorContractContractIdPatchResponsesContentApplicationJsonSchemaError
    UpdateEorContractRequestBadRequestError:
      type: object
      properties:
        error:
          $ref: >-
            #/components/schemas/EorContractContractIdPatchResponsesContentApplicationJsonSchemaError
      required:
        - error
      title: UpdateEorContractRequestBadRequestError
    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
    UpdateEorContractRequestForbiddenError:
      type: object
      properties:
        error:
          $ref: >-
            #/components/schemas/EorContractContractIdPatchResponsesContentApplicationJsonSchemaError
      required:
        - error
      title: UpdateEorContractRequestForbiddenError
    UpdateEorContractRequestNotFoundError:
      type: object
      properties:
        error:
          $ref: >-
            #/components/schemas/EorContractContractIdPatchResponsesContentApplicationJsonSchemaError
      required:
        - error
      title: UpdateEorContractRequestNotFoundError
    UpdateEorContractRequestInternalServerError:
      type: object
      properties:
        error:
          $ref: >-
            #/components/schemas/EorContractContractIdPatchResponsesContentApplicationJsonSchemaError
      required:
        - error
      title: UpdateEorContractRequestInternalServerError
  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/contract/cnt_12345678"

payload = { "data": {
        "salary": 100000,
        "job_title": "Software Engineer",
        "start_date": "2024-01-01",
        "employee_email": "john.doe@example.com",
        "employment_type": "Full-time",
        "employee_last_name": "Doe",
        "employment_country": "United States",
        "employee_first_name": "John"
    } }
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.patch(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.letsdeel.com/rest/v2/eor/contract/cnt_12345678';
const options = {
  method: 'PATCH',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"data":{"salary":100000,"job_title":"Software Engineer","start_date":"2024-01-01","employee_email":"john.doe@example.com","employment_type":"Full-time","employee_last_name":"Doe","employment_country":"United States","employee_first_name":"John"}}'
};

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/contract/cnt_12345678"

	payload := strings.NewReader("{\n  \"data\": {\n    \"salary\": 100000,\n    \"job_title\": \"Software Engineer\",\n    \"start_date\": \"2024-01-01\",\n    \"employee_email\": \"john.doe@example.com\",\n    \"employment_type\": \"Full-time\",\n    \"employee_last_name\": \"Doe\",\n    \"employment_country\": \"United States\",\n    \"employee_first_name\": \"John\"\n  }\n}")

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

	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	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/contract/cnt_12345678")

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

request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"data\": {\n    \"salary\": 100000,\n    \"job_title\": \"Software Engineer\",\n    \"start_date\": \"2024-01-01\",\n    \"employee_email\": \"john.doe@example.com\",\n    \"employment_type\": \"Full-time\",\n    \"employee_last_name\": \"Doe\",\n    \"employment_country\": \"United States\",\n    \"employee_first_name\": \"John\"\n  }\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.patch("https://api.letsdeel.com/rest/v2/eor/contract/cnt_12345678")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"data\": {\n    \"salary\": 100000,\n    \"job_title\": \"Software Engineer\",\n    \"start_date\": \"2024-01-01\",\n    \"employee_email\": \"john.doe@example.com\",\n    \"employment_type\": \"Full-time\",\n    \"employee_last_name\": \"Doe\",\n    \"employment_country\": \"United States\",\n    \"employee_first_name\": \"John\"\n  }\n}")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('PATCH', 'https://api.letsdeel.com/rest/v2/eor/contract/cnt_12345678', [
  'body' => '{
  "data": {
    "salary": 100000,
    "job_title": "Software Engineer",
    "start_date": "2024-01-01",
    "employee_email": "john.doe@example.com",
    "employment_type": "Full-time",
    "employee_last_name": "Doe",
    "employment_country": "United States",
    "employee_first_name": "John"
  }
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

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

```csharp
using RestSharp;

var client = new RestClient("https://api.letsdeel.com/rest/v2/eor/contract/cnt_12345678");
var request = new RestRequest(Method.PATCH);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"data\": {\n    \"salary\": 100000,\n    \"job_title\": \"Software Engineer\",\n    \"start_date\": \"2024-01-01\",\n    \"employee_email\": \"john.doe@example.com\",\n    \"employment_type\": \"Full-time\",\n    \"employee_last_name\": \"Doe\",\n    \"employment_country\": \"United States\",\n    \"employee_first_name\": \"John\"\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = ["data": [
    "salary": 100000,
    "job_title": "Software Engineer",
    "start_date": "2024-01-01",
    "employee_email": "john.doe@example.com",
    "employment_type": "Full-time",
    "employee_last_name": "Doe",
    "employment_country": "United States",
    "employee_first_name": "John"
  ]] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.letsdeel.com/rest/v2/eor/contract/cnt_12345678")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "PATCH"
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()
```