---
title: "Create a depart-rehire pair of changes, for filling in historical data"
method: POST
path: "/v1/org/{orgId}/change/depart-rehire"
tags: ["change"]
---

# Create a depart-rehire pair of changes, for filling in historical data

`POST /v1/org/{orgId}/change/depart-rehire`

## Request

- Base URL: `https://localhost`
- URL: `https://localhost/v1/org/{orgId}/change/depart-rehire`
- Auth: none declared

## Path parameters

- `orgId` string, required

## Query parameters

- `startDate` string, date

## Request body

- CreateChange
  - `jobId` string: job id
  - `orgId` string: parent organization id
  - `scenarioId` string: scenario that this change belongs to
  - `personId` string: the id of the person involved, or empty if no person attached to job
  - `otherJobId` string: for MOVE changes, the id of the job moving from; for RELATE changes, the id of the other job
  - `type` 'HIRE' | 'DEPART' | 'MOVE' | 'UPCOMING' | 'CREATE' | 'UPDATE' | 'DATA' | 'DELETE' | 'RELATE' | 'BACKFILL': type of change
  - `date` string, date: date of change
  - `announceDate` string, date: for HIRE and DEPART changes, the announce date, if the announce date is different from the date of change
  - `departType` 'VOLUNTARY' | 'INVOLUNTARY': for DEPART changes, the type of departure
  - `departRegret` 'REGRET' | 'NONREGRET': for DEPART changes, whether the departure is regrettable
  - `reason` string: the reason of the change
  - `promotionType` 'PROMOTION' | 'DEMOTION' | 'NONE': if it's a promotion or a demotion
  - `job` PartialJob
    - `jobId` string: globally unique job id
    - `orgId` string: parent organization id
    - `snapshotId` string: snapshot that this job belongs to
    - `title` string: job title
    - `comp` Comp
      - `baseComp` PayInterval
        - `interval` 'YEARLY' | 'MONTHLY' | 'WEEKLY' | 'DAILY' | 'HOURLY', required: Interval (annual or hourly)
        - `pay` Money, required
          - `amount` number, required
          - `currency` string, required
          - `places` integer
        - `hoursPerWeek` integer: working hours per week if interval=hourly
        - `weeksPerYear` integer: working weeks per year if interval=hourly
        - `monthsPerYear` integer: months per year if interval=month
        - `daysPerYear` integer: days per year if interval=day
      - `variableTargets` VariableComp[]: variable compensation (money or percent)
        - `type` 'BONUS' | 'COMMISSION', required: compensation type
        - `interval` 'YEARLY', required: compensation interval
      - `grantShares` integer: planned stock grant, in shares
      - `grantValue` integer: planned stock grant, in value (based on the stock's currency, not the comp)
      - `grantType` 'ISO' | 'NSO' | 'RSU' | 'SAR' | 'PERFORMANCE_SHARES' | 'PHANTOM_STOCK' | 'RSA': planned stock grant type
    - `sensitive` 'GLOBAL' | 'ORG' | 'SENSITIVE' | 'PERSONAL' | 'MANAGER' | 'HIGH' | 'PRIVATE': view sensitive of the job while open
    - `relationships` JobRelationship[]: relationship to other jobs
      - `jobId` string, required: destination job id
      - `type` 'MANAGER' | 'DIRECT' | 'INDIRECT_MANAGER' | 'INDIRECT' | 'NONE', required: type of relationship
    - `groupIds` string[]: groups that this job is a member of
    - `groupIdsByType` object: groups that this job is a member of, mapped by group type id
    - `placement` 'NORMAL' | 'ASSISTANT': guidance on placement
    - `employment` 'FULL' | 'PART' | 'TEMP' | 'CONTRACT' | 'INTERN' | 'EXPAT': employment status
    - `state` 'OPEN' | 'FILLED' | 'DEPART' | 'START': current state - whether the job is open, filled, or has someone departed or hired
    - `fields` object: fields containing custom data
    - `fieldDates` object: dates of the field data
    - `fieldsProposed` object: proposed values for fields
    - `createDate` string, date: job creation date
    - `startDate` string, date: for empty jobs, expected start date - for filled jobs, confirmed start date
    - `startDatePlanned` string, date: expected start date whether job is open or has been filled - doesn't change when job is filled
    - `personStartDate` string, date: if personId is present, the first day of that person in the org after the latest departure (if any)
    - `personEndDate` string, date: if personId is present and the person is departing, the last day of that person in the org
    - `personJobStartDate` string, date: if personId is present, the first day of that person in the job
    - `personIdDate` string, date: if personId is present, the first day that the personId actually filled the job
    - `personJobEndDate` string, date: if personId is present and the person is departing or moving out, the last day of that person in the job
    - `personId` string: the person holding this job -- either currently in the job, or upcoming announced hire
    - `backfillPersonId` string: the person who most recently held the job, who this represents a backfill for
    - `jobCodeId` string: the ID of the job code for this job
    - `backfillByJobId` string: another job which is planned to be a backfill for this job
    - `upcoming` UpcomingChange[]: if a HIRE, MOVE, or DEPART are upcoming, the details on those changes - should only include id, type, date, announceDate, personId
      - `id` string
      - `type` 'HIRE' | 'DEPART' | 'MOVE' | 'UPCOMING' | 'CREATE' | 'UPDATE' | 'DATA' | 'DELETE' | 'RELATE' | 'BACKFILL'
      - `date` string, date, required
      - `announceDate` string, date
      - `personId` string
      - `otherPersonId` string
    - `scenarioId` string: scenario that the job was created in (null if job is on primary timeline)
    - `scenarioChangedId` string: scenario that the job was changed in (null if job is on primary timeline)
    - `fetchState` 'PERSON' | 'STRUCTURE' | 'ALL': scenario that the job was changed in (null if job is on primary timeline)
  - `update` JobUpdate
    - `addRelationships` JobRelationship[]: relationships to add
      - `jobId` string, required: destination job id
      - `type` 'MANAGER' | 'DIRECT' | 'INDIRECT_MANAGER' | 'INDIRECT' | 'NONE', required: type of relationship
    - `removeRelationships` JobRelationship[]: relationships to remove
      - `jobId` string, required: destination job id
      - `type` 'MANAGER' | 'DIRECT' | 'INDIRECT_MANAGER' | 'INDIRECT' | 'NONE', required: type of relationship
    - `addGroupIds` string[]: groups to add
    - `removeGroupIds` string[]: groups to remove
    - `setGroupIds` object: groups to set
    - `grant` StockGrant
      - `id` string, required: unique identifier of grant
      - `stock` string, required: ticker symbol of this stock
      - `date` string, date, required: date of grant
      - `vestStartDate` string, date: vesting start date of grant
      - `expireDate` string, date: expiration date of grant
      - `shares` number, required: number of shares granted
      - `price` number, required: per share strike price
      - `type` 'ISO' | 'NSO' | 'RSU' | 'SAR' | 'PERFORMANCE_SHARES' | 'PHANTOM_STOCK' | 'RSA', required: type of grant
      - `vestSchedule` string, required: vesting schedule
      - `originalPrice` number: original per share value of stock (grant price at time of issue)
      - `currentPrice` number: current per share value of stock
      - `vestedShares` number: current number of shares vested
      - `vestedSharesNextYear` number: number of shares vested one year from today
      - `vestedSharesByDate` object: number of shares vested, by future date
      - `vestEndDate` string, date: vesting end date
      - `cancelDate` string, date: cancellation date
      - `terminationDate` string, date: termination date — vesting freezes on this date when the holder separates
      - `lastExercisableDate` string, date: last date on which vested shares can be exercised; after this the grant is forfeited
      - `details` string: details of the grant (arbitrary text)
      - `description` string: human-readable description of vesting schedule
    - `timeOff` TimeOff
      - `id` string, required: unique id of a time off request
      - `startDate` string, date, required: start date of time off, inclusive
      - `endDate` string, date, required: end date of time off, inclusive
      - `days` number: number of days used
      - `hours` number: number of hours used
      - `type` string: type of time off
      - `note` string: notes on the time off
      - `approval` 'APPROVED' | 'PENDING' | 'CANCELLED' | 'REJECTED' | 'SUPERSEDED': approval status of the time off
    - `title` string: new title
    - `comp` Comp
      - `baseComp` PayInterval
        - `interval` 'YEARLY' | 'MONTHLY' | 'WEEKLY' | 'DAILY' | 'HOURLY', required: Interval (annual or hourly)
        - `pay` Money, required
          - `amount` number, required
          - `currency` string, required
          - `places` integer
        - `hoursPerWeek` integer: working hours per week if interval=hourly
        - `weeksPerYear` integer: working weeks per year if interval=hourly
        - `monthsPerYear` integer: months per year if interval=month
        - `daysPerYear` integer: days per year if interval=day
      - `variableTargets` VariableComp[]: variable compensation (money or percent)
        - `type` 'BONUS' | 'COMMISSION', required: compensation type
        - `interval` 'YEARLY', required: compensation interval
      - `grantShares` integer: planned stock grant, in shares
      - `grantValue` integer: planned stock grant, in value (based on the stock's currency, not the comp)
      - `grantType` 'ISO' | 'NSO' | 'RSU' | 'SAR' | 'PERFORMANCE_SHARES' | 'PHANTOM_STOCK' | 'RSA': planned stock grant type
    - `placement` 'NORMAL' | 'ASSISTANT': new placement
    - `employment` 'FULL' | 'PART' | 'TEMP' | 'CONTRACT' | 'INTERN' | 'EXPAT': new employment status
    - `sensitive` 'GLOBAL' | 'ORG' | 'SENSITIVE' | 'PERSONAL' | 'MANAGER' | 'HIGH' | 'PRIVATE': new view sensitivity
    - `startDatePlanned` string, date: planned start date
    - `startDatePlannedRemove` boolean: remove planned start date. if both startDatePlanned and startDatePlannedRemove are set, startDatePlanned takes precedence
    - `startDate` string, date: new expected start date - will update to person start date in future
    - `backfillPersonId` string: set who this job is backfilling
    - `jobCodeId` string: set (or unset) the job code for this job
    - `hasUnsetFields` boolean: set who this job is backfilling
    - `fields` object: custom fields values to set
  - `note` string: note on the change
  - `mergeId` string: merged by user id, if this change was merged
  - `mergeScenarioId` string: scenario that this change was merged in from, if the change originally came from a scenario
  - `overrideDefaults` object: for job code linked field overrides, records the default job code value
  - `autoAppliedDefaults` object: for job code linked fields, records which fields were auto-populated from defaults

## Response `202`

accepted

## Other responses

- `400`: bad request
- `404`: not found

---

[API](https://skmtc.dev/charthop/apis/charthop-api.md) - [All operations](https://skmtc.dev/charthop/apis/charthop-api/llms.txt) - [OpenAPI document](https://skmtc.dev/charthop/apis/charthop-api/revisions/9076630a0d55?raw)
