Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: Connecteam API documentation Schedule:v2:Schedulers:Schedule:Shifts (V2):Shifts API
version: v1
servers:
- url: https://api.connecteam.com/
tags:
- name: Schedule:v2:Schedulers:Schedule:Shifts (V2):Shifts
paths:
/scheduler/v2/schedulers/{schedulerId}/shifts:
get:
tags:
- Schedule:v2:Schedulers:Schedule:Shifts (V2):Shifts
summary: Get shifts
description: Retrieve a list of shifts under a specific schedule
operationId: get_shifts_scheduler_v2_schedulers__schedulerId__shifts_get
security:
- APIKeyHeader: []
- OAuth2:
- schedule.read
parameters:
- name: schedulerId
in: path
required: true
schema:
type: integer
description: The unique identifier of the schedule
title: Schedulerid
description: The unique identifier of the schedule
- name: startTime
in: query
required: true
schema:
type: integer
description: The start time to filter by in Unix format (in seconds)
title: Starttime
description: The start time to filter by in Unix format (in seconds)
- name: endTime
in: query
required: true
schema:
type: integer
description: The end time to filter by in Unix format (in seconds)
title: Endtime
description: The end time to filter by in Unix format (in seconds)
- name: isOpenShift
in: query
required: false
schema:
anyOf:
- type: boolean
- type: 'null'
description: Filter shifts that are open shifts
title: Isopenshift
description: Filter shifts that are open shifts
- name: isPublished
in: query
required: false
schema:
anyOf:
- type: boolean
- type: 'null'
description: Filter shifts that are published
title: Ispublished
description: Filter shifts that are published
- name: isRequireAdminApproval
in: query
required: false
schema:
anyOf:
- type: boolean
- type: 'null'
description: Filter shifts that require admin approval
title: Isrequireadminapproval
description: Filter shifts that require admin approval
- name: jobId
in: query
required: false
schema:
anyOf:
- type: array
items:
type: string
- type: 'null'
description: List of job IDs
title: Jobid
description: List of job IDs
- name: assignedUserIds
in: query
required: false
schema:
anyOf:
- type: array
items:
type: integer
minimum: 1
description: Integer with minimum value of 1
- type: 'null'
description: List of user IDs
title: Assigneduserids
description: List of user IDs
- name: shiftId
in: query
required: false
schema:
anyOf:
- type: array
items:
type: string
- type: 'null'
description: List of shift IDs
title: Shiftid
description: List of shift IDs
- name: title
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Title of the shift
title: Title
description: Title of the shift
- name: sort
in: query
required: false
schema:
$ref: '#/components/schemas/ShiftsSortKeysExternal'
description: Sort key
default: created_at
description: Sort key
- name: order
in: query
required: false
schema:
$ref: '#/components/schemas/SortOrder'
description: Sort order, set only if sort key is set
default: asc
description: Sort order, set only if sort key is set
- name: limit
in: query
required: false
schema:
type: integer
maximum: 500
minimum: 1
description: The maximum number of results to display per page
default: 10
title: Limit
description: The maximum number of results to display per page
- name: offset
in: query
required: false
schema:
type: integer
minimum: 0
description: The resource offset of the last successfully read resource will be returned as the paging.offset JSON property of a paginated response containing more results
default: 0
title: Offset
description: The resource offset of the last successfully read resource will be returned as the paging.offset JSON property of a paginated response containing more results
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedBaseResponseV2_ShiftBulkResponse_'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
post:
tags:
- Schedule:v2:Schedulers:Schedule:Shifts (V2):Shifts
summary: Create shifts
description: Create single or multiple shifts under a specific schedule
operationId: create_shifts_scheduler_v2_schedulers__schedulerId__shifts_post
security:
- APIKeyHeader: []
- OAuth2:
- schedule.write
parameters:
- name: schedulerId
in: path
required: true
schema:
type: integer
description: The unique identifier of the schedule
title: Schedulerid
description: The unique identifier of the schedule
- name: notifyUsers
in: query
required: false
schema:
anyOf:
- type: boolean
- type: 'null'
description: Indicates whether to send a notification to the users assigned to the shifts. This applies only to shifts that are published.
default: true
title: Notifyusers
description: Indicates whether to send a notification to the users assigned to the shifts. This applies only to shifts that are published.
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ShiftCreateRequest'
max_items: 500
title: Shifts
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/APIResponseV2_ShiftBulkResponse_'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
delete:
tags:
- Schedule:v2:Schedulers:Schedule:Shifts (V2):Shifts
summary: Delete shifts
description: Delete single or multiple shifts in a specified schedule
operationId: delete_shifts_by_ids_scheduler_v2_schedulers__schedulerId__shifts_delete
security:
- APIKeyHeader: []
- OAuth2:
- schedule.delete
parameters:
- name: schedulerId
in: path
required: true
schema:
type: integer
description: The unique identifier of the schedule
title: Schedulerid
description: The unique identifier of the schedule
- name: notifyUsers
in: query
required: false
schema:
anyOf:
- type: boolean
- type: 'null'
description: Indicates whether to send a notification to the users assigned to the shifts. This applies only to shifts that are published.
default: true
title: Notifyusers
description: Indicates whether to send a notification to the users assigned to the shifts. This applies only to shifts that are published.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ShiftBulkDeleteRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/APIResponseV2_ShiftBulkDeleteResponse_'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
put:
tags:
- Schedule:v2:Schedulers:Schedule:Shifts (V2):Shifts
summary: Update shifts
description: Update single or multiple shifts under a specific schedule
operationId: update_shifts_scheduler_v2_schedulers__schedulerId__shifts_put
security:
- APIKeyHeader: []
- OAuth2:
- schedule.write
parameters:
- name: schedulerId
in: path
required: true
schema:
type: integer
description: The unique identifier of the schedule
title: Schedulerid
description: The unique identifier of the schedule
- name: notifyUsers
in: query
required: false
schema:
anyOf:
- type: boolean
- type: 'null'
description: Indicates whether to send a notification to the users assigned to the shifts. This applies only to shifts that are published.
default: true
title: Notifyusers
description: Indicates whether to send a notification to the users assigned to the shifts. This applies only to shifts that are published.
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ShiftUpdateRequest'
title: Shifts
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/APIResponseV2_ShiftUpdateBulkResponse_'
'400':
description: Invalid shift update request. For targeted V2 Vision base/group edits, assignedUserIds must be provided when isEditForAllUsers is explicitly false.
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/scheduler/v2/schedulers/{schedulerId}/shifts/{shiftId}:
get:
tags:
- Schedule:v2:Schedulers:Schedule:Shifts (V2):Shifts
summary: Get shift
description: Retrieve single shift information by its unique ID
operationId: get_shift_by_id_scheduler_v2_schedulers__schedulerId__shifts__shiftId__get
security:
- APIKeyHeader: []
- OAuth2:
- schedule.read
parameters:
- name: shiftId
in: path
required: true
schema:
type: string
description: The unique identifier of the shift
title: Shiftid
description: The unique identifier of the shift
- name: schedulerId
in: path
required: true
schema:
type: integer
description: The unique identifier of the schedule
title: Schedulerid
description: The unique identifier of the schedule
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/APIResponseV2_ShiftResponse_'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
delete:
tags:
- Schedule:v2:Schedulers:Schedule:Shifts (V2):Shifts
summary: Delete shift
description: Delete a single shift by its unique ID
operationId: delete_shift_by_id_scheduler_v2_schedulers__schedulerId__shifts__shiftId__delete
security:
- APIKeyHeader: []
- OAuth2:
- schedule.delete
parameters:
- name: shiftId
in: path
required: true
schema:
type: string
description: The ID of the shift to delete
title: Shiftid
description: The ID of the shift to delete
- name: schedulerId
in: path
required: true
schema:
type: integer
description: The unique identifier of the schedule
title: Schedulerid
description: The unique identifier of the schedule
- name: notifyUsers
in: query
required: false
schema:
anyOf:
- type: boolean
- type: 'null'
description: Indicates whether to send a notification to the users assigned to the shifts. This applies only to shifts that are published.
default: true
title: Notifyusers
description: Indicates whether to send a notification to the users assigned to the shifts. This applies only to shifts that are published.
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/APIResponseV2_ShiftDeleteResponse_'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
components:
schemas:
ValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
type: object
required:
- loc
- msg
- type
title: ValidationError
ShiftLayerInput:
properties:
id:
type: string
title: Id
description: The unique identifier of the shift layer
value:
$ref: '#/components/schemas/ShiftLayerInstanceInput'
description: The value of the shift layer
type: object
required:
- id
- value
title: ShiftLayerInput
ShiftDeleteResponse:
properties:
shiftId:
type: string
title: Shiftid
description: The ID of the deleted shift
type: object
required:
- shiftId
title: ShiftDeleteResponse
ShiftUpdateRequest:
properties:
shiftId:
type: string
title: Shiftid
description: The unique identifier of the shift
startTime:
anyOf:
- type: integer
minimum: 1.0
description: Integer with minimum value of 1
- type: 'null'
title: Starttime
description: The start time of the shift in Unix format (in seconds)
endTime:
anyOf:
- type: integer
minimum: 1.0
description: Integer with minimum value of 1
- type: 'null'
title: Endtime
description: The end time of the shift in Unix format (in seconds)
isOpenShift:
anyOf:
- type: boolean
- type: 'null'
title: Isopenshift
description: Indicates whether the shift is an open shift. Creates only with 1 open spot
timezone:
anyOf:
- type: string
- type: 'null'
title: Timezone
description: The timezone in Tz format (e.g. America/New_York)
title:
anyOf:
- type: string
- type: 'null'
title: Title
description: The title of the shift
isPublished:
anyOf:
- type: boolean
- type: 'null'
title: Ispublished
description: Indicates whether the shift is published
jobId:
anyOf:
- type: string
- type: 'null'
title: Jobid
description: The ID of the associated job
locationData:
anyOf:
- $ref: '#/components/schemas/LocationDataAPI'
- type: 'null'
description: The location data for the shift
isRequireAdminApproval:
anyOf:
- type: boolean
- type: 'null'
title: Isrequireadminapproval
description: Indicates whether admin approval is required for the shift. Can only be set if the shift is an open shift
assignedUserIds:
anyOf:
- items:
type: integer
minimum: 1.0
description: Integer with minimum value of 1
type: array
- type: 'null'
title: Assigneduserids
description: The list of assigned user IDs for the shift. Required for V2 Vision targeted base/group edits when isEditForAllUsers is explicitly false. When vision is enabled, multiple user IDs can be specified. Otherwise, only one user ID can be specified.
notes:
anyOf:
- items:
$ref: '#/components/schemas/HTMLNoteData'
type: array
- type: 'null'
title: Notes
description: Additional notes for the shift
breaks:
anyOf:
- items:
$ref: '#/components/schemas/ShiftUpdateBreakDataApi'
type: array
- type: 'null'
title: Breaks
description: The list of breaks for the shift
isEditForAllUsers:
type: boolean
title: Iseditforallusers
description: Indicates whether the update should be applied to all users assigned to the shift
default: false
color:
anyOf:
- type: string
- type: 'null'
title: Color
description: 'The color associated with the shift. Should be one of the following colors: [''#4B7AC5'', ''#801A1A'', ''#AE2121'', ''#DC7A7A'', ''#B0712E'', ''#D4985A'', ''#E4B37F'', ''#AE8E2D'', ''#CBA73A'', ''#D9B443'', ''#487037'', ''#6F9B5C'', ''#91B282'', ''#365C64'', ''#5687B3'', ''#7C9BA2'', ''#3968BB'', ''#85A6DA'', ''#225A8C'', ''#548CBE'', ''#81A8CC'', ''#4E3F75'', ''#604E8E'', ''#8679AA'', ''#983D73'', ''#A43778'', ''#D178AD'', ''#6B2E4C'', ''#925071'', ''#B57D9A'', ''#3a3a3a'', ''#616161'', ''#969696'']'
openSpots:
anyOf:
- type: integer
minimum: 0.0
description: Integer with minimum value of 0
- type: 'null'
title: Openspots
description: The number of open spots for the shift. Can only be set for open shifts.
customFields:
anyOf:
- items:
$ref: '#/components/schemas/BaseCustomFieldV2'
type: array
- type: 'null'
title: Customfields
description: Custom field values for the shift
type: object
required:
- shiftId
title: ShiftUpdateRequest
ShiftLayerOutput:
properties:
id:
type: string
title: Id
description: The unique identifier of the shift layer
title:
type: string
title: Title
description: The name of the shift layer
value:
$ref: '#/components/schemas/ShiftLayerInstanceOutput'
description: The value of the shift layer
type: object
required:
- id
- title
- value
title: ShiftLayerOutput
ShiftBulkDeleteResponse:
properties:
shiftsIds:
items:
type: string
type: array
title: Shiftsids
description: The IDs of the deleted shifts
type: object
required:
- shiftsIds
title: ShiftBulkDeleteResponse
StatusDataCreate:
properties:
note:
anyOf:
- type: string
- type: 'null'
title: Note
description: The note of the status
gps:
anyOf:
- $ref: '#/components/schemas/GpsDataV2'
- type: 'null'
description: The GPS data of the status
shouldOverridePreviousStatuses:
type: boolean
title: Shouldoverridepreviousstatuses
description: Indicates whether to override previous statuses
default: true
type: object
title: StatusDataCreate
ShiftDetailsInput:
properties:
shiftLayers:
items:
$ref: '#/components/schemas/ShiftLayerInput'
type: array
title: Shiftlayers
description: The various layers of information associated with the shift
shiftSource:
anyOf:
- type: string
- type: 'null'
title: Shiftsource
description: The source of the shift
type: object
title: ShiftDetailsInput
v2__features__shiftscheduler__external_api__v1__schedulers__scheduler__shifts__models__shift_response__ShiftResponse:
properties:
id:
type: string
title: Id
description: The ID of the shift
color:
type: string
title: Color
description: The color of the shift
assignedUserIds:
items:
type: integer
minimum: 1.0
description: Integer with minimum value of 1
type: array
title: Assigneduserids
description: The IDs of the assigned users
startTime:
type: integer
minimum: 1.0
title: Starttime
description: The start time of the shift
endTime:
type: integer
minimum: 1.0
title: Endtime
description: The end time of the shift
timezone:
type: string
title: Timezone
description: The timezone of the shift
isOpenShift:
type: boolean
title: Isopenshift
description: Whether the shift is an open shift
title:
type: string
title: Title
description: The title of the shift
jobId:
anyOf:
- type: string
- type: 'null'
title: Jobid
description: The ID of the job
locationData:
anyOf:
- $ref: '#/components/schemas/LocationDataAPI'
- type: 'null'
description: The location data
isPublished:
type: boolean
title: Ispublished
description: Whether the shift is published
isRequireAdminApproval:
anyOf:
- type: boolean
- type: 'null'
title: Isrequireadminapproval
description: Whether the shift requires admin approval
updateTime:
anyOf:
- type: integer
minimum: 1.0
description: Integer with minimum value of 1
- type: 'null'
title: Updatetime
description: The update time of the shift
creationTime:
anyOf:
- type: integer
minimum: 1.0
description: Integer with minimum value of 1
- type: 'null'
title: Creationtime
description: The creation time of the shift
createdBy:
anyOf:
- type: integer
minimum: 1.0
description: Integer with minimum value of 1
- type: 'null'
title: Createdby
description: The user ID of the admin who created the shift. If the shift was created via API, the user ID will be the owner of the authentication key
openSpots:
anyOf:
- type: integer
- type: 'null'
title: Openspots
description: The number of open spots
notes:
items:
anyOf:
- $ref: '#/components/schemas/HTMLNoteDataOut'
- $ref: '#/components/schemas/AlbumNoteDataOut'
- $ref: '#/components/schemas/FileNoteDataOut'
type: array
title: Notes
description: The notes of the shift
statuses:
items:
$ref: '#/components/schemas/StatusData'
type: array
title: Statuses
description: The statuses of the shift
breaks:
items:
$ref: '#/components/schemas/ShiftBreakDataApi'
type: array
title: Breaks
description: The breaks of the shift
shiftDetails:
$ref: '#/components/schemas/ShiftDetailsOutput'
description: The additional details on the shift, if applicable
customFields:
items:
$ref: '#/components/schemas/CustomFieldResponseV2'
type: array
title: Customfields
description: The shift's custom fields
type: object
required:
- id
- color
- startTime
- endTime
- timezone
- isOpenShift
- title
- isPublished
- shiftDetails
title: ShiftResponse
ShiftCreateRequest:
properties:
startTime:
type: integer
minimum: 1.0
title: Starttime
description: The start time of the shift in Unix format (in seconds)
endTime:
type: integer
minimum: 1.0
title: Endtime
description: The end time of the shift in Unix format (in seconds)
isOpenShift:
type: boolean
title: Isopenshift
description: Indicates whether the shift is an open shift. Creates only with 1 open spot
default: false
openSpots:
anyOf:
- type: integer
minimum: 0.0
description: Integer with minimum value of 0
- type: 'null'
title: Openspots
description: The number of open spots for the shift. Can only be set for open shifts.
timezone:
anyOf:
- type: string
- type: 'null'
title: Timezone
description: The timezone of the shift in Tz format (e.g. America/New_York). If not specified, it uses the timezone configured in the app settings
title:
anyOf:
- type: string
- type: 'null'
title: Title
description: The title of the shift, If this field remains empty, the jobId field must be specified.
isPublished:
type: boolean
title: Ispublished
description: Indicates whether the shift is published
default: false
jobId:
anyOf:
- type: string
- type: 'null'
title: Jobid
description: The ID of the associated job
locationData:
anyOf:
- $ref: '#/components/schemas/LocationDataAPI'
- type: 'null'
description: The location data for the shift
isRequireAdminApproval:
anyOf:
- type: boolean
- type: 'null'
title: Isrequireadminapproval
description: Indicates whether admin approval is required for claiming the shift. Can only be set if the shift is an open shift
assignedUserIds:
items:
type: integer
minimum: 1.0
description: Integer with minimum value of 1
type: array
title: Assigneduserids
description: The list of assigned user IDs for the shift. When vision is enabled, multiple user IDs can be specified. Otherwise, only one user ID can be specified. If the shift is open, this list should remain empty.
notes:
items:
$ref: '#/components/schemas/HTMLNoteData'
type: array
title: Notes
description: Additional notes for the shift
statuses:
items:
$ref: '#/components/schemas/StatusDataCreate'
type: array
title: Statuses
description: The list of statuses associated with the shift
breaks:
items:
$ref: '#/components/schemas/ShiftCreateBreakDataApi'
type: array
title: Breaks
description: A list of breaks to create for the shift
color:
anyOf:
- type: string
- type: 'null'
title: Color
description: 'The color associated with the shift, defaults to the color of the job linked to the shift. If a specific color is provided, it will override the default job color. Defaults to #4B7AC5. Should be one of the following colors: [''#4B7AC5'', ''#801A1A'', ''#AE2121'', ''#DC7A7A'', ''#B0712E'', ''#D4985A'', ''#E4B37F'', ''#AE8E2D'', ''#CBA73A'', ''#D9B443'', ''#487037'', ''#6F9B5C'', ''#91B282'', ''#365C64'', ''#5687B3'', ''#7C9BA2'', ''#3968BB'', ''#85A6DA'', ''#225A8C'', ''#548CBE'', ''#81A8CC'', ''#4E3F75'', ''#604E8E'', ''#8679AA'', ''#983D73'', ''#A43778'', ''#D178AD'', ''#6B2E4C'', ''#925071'', ''#B57D9A'', ''#3a3a3a'', ''#616161'', ''#969696'']'
shiftDetails:
anyOf:
- $ref: '#/components/schemas/ShiftDetailsInput'
- type: 'null'
description: The additional details on the shift, if applicable.
customFields:
items:
$ref: '#/components/schemas/BaseCustomFieldV2'
type: array
title: Customfields
description: Custom field values for the shift
type: object
required:
- startTime
- endTime
title: ShiftCreateRequest
HTMLNoteDataOut:
properties:
type:
type: string
title: Type
description: HTML note type
default: html
html:
type: string
title: Html
description: The HTML content of the note
type: object
required:
- html
title: HTMLNoteDataOut
APIResponseV2_ShiftUpdateBulkResponse_:
properties:
requestId:
type: string
title: Requestid
data:
$ref: '#/components/schemas/ShiftUpdateBulkResponse'
type: object
required:
- data
title: APIResponseV2[ShiftUpdateBulkResponse]
APIResponseV2_ShiftBulkDeleteResponse_:
properties:
requestId:
type: string
title: Requestid
data:
$ref: '#/components/schemas/ShiftBulkDeleteResponse'
type: object
required:
- data
title: APIResponseV2[ShiftBulkDeleteResponse]
ShiftLayerInstanceOutput:
properties:
id:
type: string
title: Id
description: The unique identifier of the value
displayName:
type: string
title: Displayname
description: The name of the value
type: object
required:
- id
- displayName
title: ShiftLayerInstanceOutput
ShiftBulkDeleteRequest:
properties:
shiftsIds:
items:
type: string
type: array
maxItems: 20
title: Shiftsids
description: The unique identifiers of the shifts to delete
type: object
required:
- shiftsIds
title: ShiftBulkDeleteRequest
PaginatedBaseResponseV2_ShiftBulkResponse_:
properties:
requestId:
type: string
title: Requestid
data:
$ref: '#/components/schemas/ShiftBulkResponse'
paging:
$ref: '#/components/schemas/PagingResponseModelV2'
type: object
required:
- data
- paging
title: PaginatedBaseResponseV2[ShiftBulkResponse]
ShiftCreateBreakDataApi:
properties:
name:
type: string
title: Name
description: The name of the break.
type:
$ref: '#/components/schemas/ShiftBreakTypeAPI'
description: The type of the break (paid/unpaid)
startTime:
anyOf:
- type: integer
minimum: 0.0
description: Integer with minimum value of 0
- type: 'null'
title: Starttime
description: The time the break starts, co
# --- truncated at 32 KB (47 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/connecteam/refs/heads/main/openapi/connecteam-schedule-v2-schedulers-schedule-shifts-v2-shifts-api-openapi.yml