---
title: "UpdateScheduledShift"
method: PUT
path: "/v2/labor/scheduled-shifts/{id}"
tags: ["Labor"]
---

# UpdateScheduledShift

`PUT /v2/labor/scheduled-shifts/{id}`

Updates the draft shift details for a scheduled shift. This endpoint supports
sparse updates, so only new, changed, or removed fields are required in the request.
You must publish the shift to make updates public.

You can make the following updates to `draft_shift_details`:
- Change the `location_id`, `job_id`, `start_at`, and `end_at` fields.
- Add, change, or clear the `team_member_id` and `notes` fields. To clear these fields,
set the value to null.
- Change the `is_deleted` field. To delete a scheduled shift, set `is_deleted` to true
and then publish the shift.

## Path parameters

- `id` string, required

## Request body

- UpdateScheduledShiftRequest
  - `scheduled_shift` ScheduledShift, required — Represents a specific time slot in a work schedule. This object is used to manage the lifecycle of a scheduled shift from the draft to published state. A scheduled shift contains the latest draft shift details and current published shift details.
    - `id` string — **Read only** The Square-issued ID of the scheduled shift.
    - `draft_shift_details` ScheduledShiftDetails — Represents shift details for draft and published versions of a [scheduled shift](entity:ScheduledShift), such as job ID, team member assignment, and start and end times.
      - `team_member_id` string, nullable — The ID of the [team member](entity:TeamMember) scheduled for the shift.
      - `location_id` string, nullable — The ID of the [location](entity:Location) the shift is scheduled for.
      - `job_id` string, nullable — The ID of the [job](entity:Job) the shift is scheduled for.
      - `start_at` string, nullable — The start time of the shift, in RFC 3339 format in the time zone &plus; offset of the shift location specified in `location_id`. Precision up to the minute is respected; seconds are truncated.
      - `end_at` string, nullable — The end time for the shift, in RFC 3339 format in the time zone &plus; offset of the shift location specified in `location_id`. Precision up to the minute is respected; seconds are truncated.
      - `notes` string, nullable — Optional notes for the shift.
      - `is_deleted` boolean, nullable — Indicates whether the draft shift version is deleted. If set to `true` when the shift is published, the entire scheduled shift (including the published shift) is deleted and cannot be accessed using any endpoint.
      - `timezone` string — The time zone of the shift location, calculated based on the `location_id`. This field is provided for convenience.
    - `published_shift_details` ScheduledShiftDetails — Represents shift details for draft and published versions of a [scheduled shift](entity:ScheduledShift), such as job ID, team member assignment, and start and end times.
      - `team_member_id` string, nullable — The ID of the [team member](entity:TeamMember) scheduled for the shift.
      - `location_id` string, nullable — The ID of the [location](entity:Location) the shift is scheduled for.
      - `job_id` string, nullable — The ID of the [job](entity:Job) the shift is scheduled for.
      - `start_at` string, nullable — The start time of the shift, in RFC 3339 format in the time zone &plus; offset of the shift location specified in `location_id`. Precision up to the minute is respected; seconds are truncated.
      - `end_at` string, nullable — The end time for the shift, in RFC 3339 format in the time zone &plus; offset of the shift location specified in `location_id`. Precision up to the minute is respected; seconds are truncated.
      - `notes` string, nullable — Optional notes for the shift.
      - `is_deleted` boolean, nullable — Indicates whether the draft shift version is deleted. If set to `true` when the shift is published, the entire scheduled shift (including the published shift) is deleted and cannot be accessed using any endpoint.
      - `timezone` string — The time zone of the shift location, calculated based on the `location_id`. This field is provided for convenience.
    - `version` integer — **Read only** The current version of the scheduled shift, which is incremented with each update. This field is used for [optimistic concurrency](https://developer.squareup.com/docs/build-basics/common-api-patterns/optimistic-concurrency) control to ensure that requests don't overwrite data from another request.
    - `created_at` string — The timestamp of when the scheduled shift was created, in RFC 3339 format presented as UTC.
    - `updated_at` string — The timestamp of when the scheduled shift was last updated, in RFC 3339 format presented as UTC.

## Response `200`

Success

- UpdateScheduledShiftResponse — Represents an [UpdateScheduledShift](api-endpoint:Labor-UpdateScheduledShift) response. Either `scheduled_shift` or `errors` is present in the response.
  - `scheduled_shift` ScheduledShift — Represents a specific time slot in a work schedule. This object is used to manage the lifecycle of a scheduled shift from the draft to published state. A scheduled shift contains the latest draft shift details and current published shift details.
    - `id` string — **Read only** The Square-issued ID of the scheduled shift.
    - `draft_shift_details` ScheduledShiftDetails — Represents shift details for draft and published versions of a [scheduled shift](entity:ScheduledShift), such as job ID, team member assignment, and start and end times.
      - `team_member_id` string, nullable — The ID of the [team member](entity:TeamMember) scheduled for the shift.
      - `location_id` string, nullable — The ID of the [location](entity:Location) the shift is scheduled for.
      - `job_id` string, nullable — The ID of the [job](entity:Job) the shift is scheduled for.
      - `start_at` string, nullable — The start time of the shift, in RFC 3339 format in the time zone &plus; offset of the shift location specified in `location_id`. Precision up to the minute is respected; seconds are truncated.
      - `end_at` string, nullable — The end time for the shift, in RFC 3339 format in the time zone &plus; offset of the shift location specified in `location_id`. Precision up to the minute is respected; seconds are truncated.
      - `notes` string, nullable — Optional notes for the shift.
      - `is_deleted` boolean, nullable — Indicates whether the draft shift version is deleted. If set to `true` when the shift is published, the entire scheduled shift (including the published shift) is deleted and cannot be accessed using any endpoint.
      - `timezone` string — The time zone of the shift location, calculated based on the `location_id`. This field is provided for convenience.
    - `published_shift_details` ScheduledShiftDetails — Represents shift details for draft and published versions of a [scheduled shift](entity:ScheduledShift), such as job ID, team member assignment, and start and end times.
      - `team_member_id` string, nullable — The ID of the [team member](entity:TeamMember) scheduled for the shift.
      - `location_id` string, nullable — The ID of the [location](entity:Location) the shift is scheduled for.
      - `job_id` string, nullable — The ID of the [job](entity:Job) the shift is scheduled for.
      - `start_at` string, nullable — The start time of the shift, in RFC 3339 format in the time zone &plus; offset of the shift location specified in `location_id`. Precision up to the minute is respected; seconds are truncated.
      - `end_at` string, nullable — The end time for the shift, in RFC 3339 format in the time zone &plus; offset of the shift location specified in `location_id`. Precision up to the minute is respected; seconds are truncated.
      - `notes` string, nullable — Optional notes for the shift.
      - `is_deleted` boolean, nullable — Indicates whether the draft shift version is deleted. If set to `true` when the shift is published, the entire scheduled shift (including the published shift) is deleted and cannot be accessed using any endpoint.
      - `timezone` string — The time zone of the shift location, calculated based on the `location_id`. This field is provided for convenience.
    - `version` integer — **Read only** The current version of the scheduled shift, which is incremented with each update. This field is used for [optimistic concurrency](https://developer.squareup.com/docs/build-basics/common-api-patterns/optimistic-concurrency) control to ensure that requests don't overwrite data from another request.
    - `created_at` string — The timestamp of when the scheduled shift was created, in RFC 3339 format presented as UTC.
    - `updated_at` string — The timestamp of when the scheduled shift was last updated, in RFC 3339 format presented as UTC.
  - `errors` Error[] — Any errors that occurred during the request.
    - `category` 'API_ERROR' | 'AUTHENTICATION_ERROR' | 'INVALID_REQUEST_ERROR' | 'RATE_LIMIT_ERROR' | 'PAYMENT_METHOD_ERROR' | 'REFUND_ERROR' | 'MERCHANT_SUBSCRIPTION_ERROR' | 'EXTERNAL_VENDOR_ERROR', required — Indicates which high-level category of error has occurred during a request to the Connect API.
    - `code` 'INTERNAL_SERVER_ERROR' | 'UNAUTHORIZED' | 'ACCESS_TOKEN_EXPIRED' | 'ACCESS_TOKEN_REVOKED' | 'CLIENT_DISABLED' | 'FORBIDDEN' | 'INSUFFICIENT_SCOPES' | 'APPLICATION_DISABLED' | 'V1_APPLICATION' | 'V1_ACCESS_TOKEN' | 'CARD_PROCESSING_NOT_ENABLED' | 'MERCHANT_SUBSCRIPTION_NOT_FOUND' | 'BAD_REQUEST' | 'MISSING_REQUIRED_PARAMETER' | 'INCORRECT_TYPE' | 'INVALID_TIME' | 'INVALID_TIME_RANGE' | 'INVALID_VALUE' | 'INVALID_CURSOR' | 'UNKNOWN_QUERY_PARAMETER' | 'CONFLICTING_PARAMETERS' | 'EXPECTED_JSON_BODY' | 'INVALID_SORT_ORDER' | 'VALUE_REGEX_MISMATCH' | 'VALUE_TOO_SHORT' | 'VALUE_TOO_LONG' | 'VALUE_TOO_LOW' | 'VALUE_TOO_HIGH' | 'VALUE_EMPTY' | 'ARRAY_LENGTH_TOO_LONG' | 'ARRAY_LENGTH_TOO_SHORT' | 'ARRAY_EMPTY' | 'EXPECTED_BOOLEAN' | 'EXPECTED_INTEGER' | 'EXPECTED_FLOAT' | 'EXPECTED_STRING' | 'EXPECTED_OBJECT' | 'EXPECTED_ARRAY' | 'EXPECTED_MAP' | 'EXPECTED_BASE64_ENCODED_BYTE_ARRAY' | 'INVALID_ARRAY_VALUE' | 'INVALID_ENUM_VALUE' | 'INVALID_CONTENT_TYPE' | 'INVALID_FORM_VALUE' | 'CUSTOMER_NOT_FOUND' | 'ONE_INSTRUMENT_EXPECTED' | 'NO_FIELDS_SET' | 'TOO_MANY_MAP_ENTRIES' | 'MAP_KEY_LENGTH_TOO_SHORT' | 'MAP_KEY_LENGTH_TOO_LONG' | 'CUSTOMER_MISSING_NAME' | 'CUSTOMER_MISSING_EMAIL' | 'INVALID_PAUSE_LENGTH' | 'INVALID_DATE' | 'UNSUPPORTED_COUNTRY' | 'UNSUPPORTED_CURRENCY' | 'APPLE_TTP_PIN_TOKEN' | 'CARD_EXPIRED' | 'INVALID_EXPIRATION' | 'INVALID_EXPIRATION_YEAR' | 'INVALID_EXPIRATION_DATE' | 'UNSUPPORTED_CARD_BRAND' | 'UNSUPPORTED_ENTRY_METHOD' | 'INVALID_ENCRYPTED_CARD' | 'INVALID_CARD' | 'PAYMENT_AMOUNT_MISMATCH' | 'GENERIC_DECLINE' | 'CVV_FAILURE' | 'ADDRESS_VERIFICATION_FAILURE' | 'INVALID_ACCOUNT' | 'CURRENCY_MISMATCH' | 'INSUFFICIENT_FUNDS' | 'INSUFFICIENT_PERMISSIONS' | 'CARDHOLDER_INSUFFICIENT_PERMISSIONS' | 'INVALID_LOCATION' | 'TRANSACTION_LIMIT' | 'VOICE_FAILURE' | 'PAN_FAILURE' | 'EXPIRATION_FAILURE' | 'CARD_NOT_SUPPORTED' | 'READER_DECLINED' | 'INVALID_PIN' | 'MISSING_PIN' | 'MISSING_ACCOUNT_TYPE' | 'INVALID_POSTAL_CODE' | 'INVALID_FEES' | 'MANUALLY_ENTERED_PAYMENT_NOT_SUPPORTED' | 'PAYMENT_LIMIT_EXCEEDED' | 'GIFT_CARD_AVAILABLE_AMOUNT' | 'ACCOUNT_UNUSABLE' | 'BUYER_REFUSED_PAYMENT' | 'DELAYED_TRANSACTION_EXPIRED' | 'DELAYED_TRANSACTION_CANCELED' | 'DELAYED_TRANSACTION_CAPTURED' | 'DELAYED_TRANSACTION_FAILED' | 'CARD_TOKEN_EXPIRED' | 'CARD_TOKEN_USED' | 'AMOUNT_TOO_HIGH' | 'UNSUPPORTED_INSTRUMENT_TYPE' | 'REFUND_AMOUNT_INVALID' | 'REFUND_ALREADY_PENDING' | 'PAYMENT_NOT_REFUNDABLE' | 'PAYMENT_NOT_REFUNDABLE_DUE_TO_DISPUTE' | 'REFUND_ERROR_PAYMENT_NEEDS_COMPLETION' | 'REFUND_DECLINED' | 'INSUFFICIENT_PERMISSIONS_FOR_REFUND' | 'INVALID_CARD_DATA' | 'SOURCE_USED' | 'SOURCE_EXPIRED' | 'UNSUPPORTED_LOYALTY_REWARD_TIER' | 'LOCATION_MISMATCH' | 'ORDER_UNPAID_NOT_RETURNABLE' | 'PARTIAL_PAYMENT_DELAY_CAPTURE_NOT_SUPPORTED' | 'IDEMPOTENCY_KEY_REUSED' | 'UNEXPECTED_VALUE' | 'SANDBOX_NOT_SUPPORTED' | 'INVALID_EMAIL_ADDRESS' | 'INVALID_PHONE_NUMBER' | 'CHECKOUT_EXPIRED' | 'BAD_CERTIFICATE' | 'INVALID_SQUARE_VERSION_FORMAT' | 'API_VERSION_INCOMPATIBLE' | 'CARD_PRESENCE_REQUIRED' | 'UNSUPPORTED_SOURCE_TYPE' | 'CARD_MISMATCH' | 'PLAID_ERROR' | 'PLAID_ERROR_ITEM_LOGIN_REQUIRED' | 'PLAID_ERROR_RATE_LIMIT' | 'PAYMENT_SOURCE_NOT_ENABLED_FOR_TARGET' | 'CARD_DECLINED' | 'VERIFY_CVV_FAILURE' | 'VERIFY_AVS_FAILURE' | 'CARD_DECLINED_CALL_ISSUER' | 'CARD_DECLINED_VERIFICATION_REQUIRED' | 'BAD_EXPIRATION' | 'CHIP_INSERTION_REQUIRED' | 'ALLOWABLE_PIN_TRIES_EXCEEDED' | 'RESERVATION_DECLINED' | 'UNKNOWN_BODY_PARAMETER' | 'NOT_FOUND' | 'APPLE_PAYMENT_PROCESSING_CERTIFICATE_HASH_NOT_FOUND' | 'METHOD_NOT_ALLOWED' | 'NOT_ACCEPTABLE' | 'REQUEST_TIMEOUT' | 'CONFLICT' | 'GONE' | 'REQUEST_ENTITY_TOO_LARGE' | 'UNSUPPORTED_MEDIA_TYPE' | 'UNPROCESSABLE_ENTITY' | 'RATE_LIMITED' | 'NOT_IMPLEMENTED' | 'BAD_GATEWAY' | 'SERVICE_UNAVAILABLE' | 'TEMPORARY_ERROR' | 'GATEWAY_TIMEOUT', required — Indicates the specific error that occurred during a request to a Square API.
    - `detail` string — A human-readable description of the error for debugging purposes.
    - `field` string — The name of the field provided in the original request (if any) that the error pertains to.

---

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