---
title: "Update User"
method: PUT
path: "/v2/company/{company_id}/users/{identifier}"
tags: ["Users"]
---

# Update User

`PUT /v2/company/{company_id}/users/{identifier}`

## Request

- Base URL: `https://api.7shifts.com`
- URL: `https://api.7shifts.com/v2/company/{company_id}/users/{identifier}`
- Auth: one of:
  - OAuth 2
    - Authorization code: `https://app.7shifts.com/oauth2/authorize`
    - Client credentials
    - Password
    - Token URL: `https://app.7shifts.com/oauth2/token`
  - API key in cookie `7session`
- TypeScript: <https://skmtc.dev/7shifts/apis/7shifts-api/docs/v2/company/:company_id/users/:identifier/put.ts> (a function with typed inputs; its response is checked against the schema)

## Path parameters

- `company_id` integer, required
- `identifier` integer, required

## Headers

- `x-api-version` string: An API version
- `x-company-guid` string, uuid

## Request body

- object
  - `first_name` string: The user's first name
  - `last_name` string: The user's last name
  - `preferred_first_name` string, nullable: An optional alternate first name
  - `preferred_last_name` string, nullable: An optional alternate last name
  - `email` string: the user's email
  - `mobile_number` string, nullable: The user's mobile phone number. Format with no spaces and include area code
  - `home_number` string, nullable: The user's home phone number. Format with no spaces and include area code
  - `address` string, nullable: The user's address
  - `postal_zip` string, nullable: The user's postal code or zip code
  - `city` string, nullable: The user's city
  - `prov_state` string, nullable: The user's province or state
  - `notes` string, nullable: Notes associated with this user
  - `hire_date` string, date, nullable: The hire date of this user. Format YYYY-MM-DD
  - `type` 'employee' | 'asst_manager' | 'manager': The type of this user
  - `employee_id` string, nullable: Either an employee ID or an ID assigned by your payroll provider that is used in your payroll export
  - `punch_id` string, nullable: The punch ID they punch in/out with.
  - `birth_date` string, date, nullable: The user's birthdate. Format YYYY-MM-DD
  - `language` 'en' | 'es' | 'fr': The user's preferred language. Default value is en
  - `appear_as_employee` boolean: User should appear in the system as an employee. Applies to admin users only
  - `subscribe_to_updates` boolean: Subscribe this user to updates from 7shifts. This includes announcing new features for 7shifts
  - `max_weekly_hours` number, nullable: The maximum weekly hours this user is set to work
  - `active` boolean: User status. If false the user is unable to login
  - `pronouns` string, nullable: The user's pronouns
  - `permissions_template_id` integer, nullable: Permission Template ID the user is assigned to
  - `skill_level` 1 | 2 | 3, nullable
  - `invite` boolean: If true, an invite will be sent to the user
  - `wage_type` 'hourly' | 'weekly_salary': Whether the user is paid hourly or weekly
  - `show_copy_previous_dialog` boolean: This setting enables or disables the modal that appears when copying a schedule
  - `push` boolean: If the user should receive mobile push notifications. Must have the 7shifts mobile app installed and logged in.
  - `sms_notifications` boolean: If the user should receive SMS notifications

## Response `200`

OK

- object
  - `object` 'user', required
  - `data` object, required
    - `id` integer, required: User ID
    - `identity_id` integer, nullable: Internal use
    - `company_id` integer, required: Company ID
    - `first_name` string, required: First Name
    - `last_name` string, required: Last Name
    - `preferred_first_name` string, nullable: Preferred first name
    - `preferred_last_name` string, nullable: Preferred last name
    - `pronouns` string, nullable: Pronouns
    - `email` string, required: Email Address
    - `mobile_number` string, nullable, required: Mobile Number
    - `home_number` string, nullable, required: Home Number
    - `birth_date` string, date, nullable, required: Birthdate. Format YYYY-MM-DD
    - `address` string, nullable, required: Address
    - `postal_zip` string, nullable, required: Zip or postal code
    - `city` string, nullable, required: City
    - `prov_state` string, nullable, required: State or province
    - `invite_status` 'accepted' | 'pending' | 'required' | 'missing_contact_info', required: Invitation status to join 7shifts for the first time
    - `active` boolean, required: If true user is active in allowed to login. If false the user has been deactivated/deleted
    - `photo` string, nullable, required: Photo url
    - `notes` string, nullable, required: User notes
    - `timezone` string, nullable, required: Timezone. Valid zone info name
    - `type` 'employee' | 'asst_manager' | 'manager' | 'employer', required: User type
    - `employee_id` string, nullable, required: Employee ID
    - `max_weekly_hours` string, required: Maximum weekly hours user is set to work
    - `punch_id` string, nullable, required: Value used during clock in/out in 7shifts applications
    - `created` string
    - `modified` string
    - `invited` string, nullable, required: The date that the user has been sent an invitation to join 7shifts, null if not invited.
    - `invite_accepted` string, nullable, required: The date that the user accepted their 7shifts invitation, null if not accepted.
    - `is_new` boolean, required: If true user is new
    - `appear_as_employee` boolean: If true user can be assigned shifts. This applies to managers, asst_manager and employers.
    - `subscribe_to_updates` boolean: If true this user is subscribed to updates from 7shifts. This includes announcing new features for 7shifts
    - `language` string: Specified language. In ISO 639-1 format
    - `push` boolean: Are mobile push notifications enabled for the user
    - `skill_level` integer, nullable: Current assigned skill level
    - `hourly_wage` integer, nullable: Users current hourly wage in cents
    - `wage_type` string, nullable: The type of wage the user will receive
    - `sms_me_schedules` boolean, nullable: If the user should receive sms notifications for shifts
    - `notify_ot_risk` boolean, nullable: Should notifications be sent if the user is at risk of overtime hours
    - `permissions_template_id` integer, nullable: The ID of the permission template currently assigned to the user.
    - `reactivation_status` 'accepted' | 'pending' | 'expired', nullable: Invitation status to re-join 7shifts after initially being deactivated
    - `meta` object, nullable
      - `readonly_fields` string[]
      - `identity_status` 'created' | 'updated' | 'merging_identities', nullable: Indicates whether an identity was created, updated, or lead to an Identity merge from the preceding request

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not found
- `422`: Unprocessable Entity
- `500`: Server Error

---

[API](https://skmtc.dev/7shifts/apis/7shifts-api.md) - [All operations](https://skmtc.dev/7shifts/apis/7shifts-api/llms.txt) - [OpenAPI document](https://skmtc.dev/7shifts/apis/7shifts-api/revisions/40e0ef40dfcd?raw)
