---
title: "Return recent changes across an org, or for a particular person or job"
method: GET
path: "/v1/org/{orgId}/change"
tags: ["change"]
---

# Return recent changes across an org, or for a particular person or job

`GET /v1/org/{orgId}/change`

## Path parameters

- `orgId` string, required

## Query parameters

- `scenarioId` string
- `date` string, date
- `untilDate` string, date
- `type` string
- `fields` string
- `personId` string
- `jobId` string
- `includeBackfill` boolean
- `refs` string
- `q` string
- `from` string
- `limit` integer
- `open` 'FILLED' | 'OPEN'
- `desc` boolean
- `scenarioOnly` boolean
- `parentOnly` boolean
- `excludeAtsRecruitingFields` boolean
- `includeStruck` boolean
- `status` string
- `stripUpdates` boolean
- `format` string
- `fieldEntityTypes` string
- `returnAccess` string

## Response `200`

successful operation

- ResultsChange
  - `data` Change[], required
    - `id` string, required — unique id
    - `jobId` string, required — job id
    - `orgId` string, required — parent organization id
    - `scenarioId` string — scenario that this change belongs to
    - `mergeScenarioId` string — scenario that this change was merged in from, if the change originally came from a scenario
    - `parentChangeId` string — change that this change emanates from
    - `priorStateChangeId` string — connects this change to a previous version if itself that you might want to roll back to because of bad edits
    - `type` 'HIRE' | 'DEPART' | 'MOVE' | 'UPCOMING' | 'CREATE' | 'UPDATE' | 'DATA' | 'DELETE' | 'RELATE' | 'BACKFILL', required — type of change
    - `date` string, date, required — date of change
    - `sort` integer — sort order of change
    - `announceDate` string, date — for HIRE and DEPART changes, the announce date, if the announce date is different from the date of change
    - `status` 'ACTIVE' | 'STRUCK' | 'CONFLICT' | 'INACTIVE' | 'PROPOSED', required — whether the change is active or not
    - `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
    - `otherPersonId` string — for MOVE changes, the id of the other person involved in the move
    - `departType` 'VOLUNTARY' | 'INVOLUNTARY' — for DEPART changes, the type of departure
    - `departRegret` 'REGRET' | 'NONREGRET' — for DEPART changes, whether the departure was regrettable
    - `promotionType` 'PROMOTION' | 'DEMOTION' | 'NONE' — if it's a promotion or a demotion
    - `reason` string — the reason for the change
    - `relateType` 'MANAGER' | 'DIRECT' | 'INDIRECT_MANAGER' | 'INDIRECT' | 'NONE' — for RELATE changes, the type of the relationship
    - `refs` object[] — list of ids referenced in text field body, for indexing purposes only
    - `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)
    - `otherJob` 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)
    - `formId` string — if this change was data submitted by a form, the id of that form
    - `formResponseId` string — if this change is associated with a form response, the id of that form response
    - `assessmentId` string — if this change is associated with a assessment, the id of that assessment
    - `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
    - `upcoming` UpcomingChange
      - `id` string
      - `type` 'HIRE' | 'DEPART' | 'MOVE' | 'UPCOMING' | 'CREATE' | 'UPDATE' | 'DATA' | 'DELETE' | 'RELATE' | 'BACKFILL'
      - `date` string, date, required
      - `announceDate` string, date
      - `personId` string
      - `otherPersonId` string
    - `conflict` string — for changes that have been struck due to a merge conflict, the description of the conflict
    - `note` string — note on the change
    - `createId` string — created by user id
    - `createBehalfId` string — created on behalf of user id
    - `createAttribution` Attribution
      - `principalUserId` string
      - `agentUserIds` string[]
      - `eventId` string
      - `aiChatId` string
      - `aiToolUseId` string
      - `channel` 'WEB' | 'MOBILE' | 'SLACK' | 'TEAMS' | 'MCP'
    - `mergeId` string — merged by user id, if this change was merged
    - `createAt` string — created timestamp
    - `updateAt` string — updated timestamp
    - `updateId` string — updated by user id
    - `updateBehalfId` string — last updated on behalf of user id
    - `updateAttribution` Attribution
      - `principalUserId` string
      - `agentUserIds` string[]
      - `eventId` string
      - `aiChatId` string
      - `aiToolUseId` string
      - `channel` 'WEB' | 'MOBILE' | 'SLACK' | 'TEAMS' | 'MCP'
    - `statusAt` string — timestamp of status change
    - `approvalAt` string — timestamp of approval
    - `approvalId` string — approved by user id
    - `approvalNote` string — approval/rejection note
    - `approval` 'MANAGER' | 'GRAND_MANAGER' — if approval is required, who is allowed to approve
    - `authorSensitive` 'GLOBAL' | 'ORG' | 'SENSITIVE' | 'PERSONAL' | 'MANAGER' | 'HIGH' | 'PRIVATE' — view sensitivity for the author author of this form - the level of view access required to view the createId and updateId fields
    - `canEdit` boolean — flag indicating whether authorized user can modify this change (will vary depending on user)
  - `next` string
  - `access` ResultsAccess[]
    - `ids` string[]
    - `allowed` AccessAction[], required
      - `action` string, required
      - `fields` string[]
      - `types` string[]

## Other responses

- `400` — bad request
- `401` — not authorized
- `404` — not found

---

[API](https://skmtc.net/charthop/apis/charthop-api.md) · [All operations](https://skmtc.net/charthop/apis/charthop-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/charthop/charthop-api/revisions/2de21f45f447/schema)
