---
updatedAt: 2026-02-16T15:39:58.000Z
agentTools:
  siteIndex: https://developer.paylocity.com/llms.txt
  projectIndex: https://developer.paylocity.com/integrations/llms.txt
---

# Get Open Shifts by Company

**Summary Description**

The GET Open Shifts endpoint returns all shifts that are not currently assigned to an employee. The response includes each open shift and the total number available, allowing supervisors and managers to determine how many shifts can be assigned.

**Use cases:**
- Managers can retrieve a list of unassigned shifts and make them available for employees to claim.
- The endpoint can be used in a third-party system where employees view and request available shifts. Allocation can follow predefined rules such as seniority or skill requirements.
- The endpoint provides skill requirements for each open shift, enabling organizations to match shifts with qualified employees.

# OpenAPI definition

```json
{
  "openapi": "3.0.1",
  "info": {
    "title": "Scheduling Api",
    "description": "The Scheduling is designed to streamline the process of retrieving shifts",
    "version": "2024-07-11"
  },
  "servers": [
    {
      "url": "dc1demogwext.paylocity.com"
    }
  ],
  "paths": {
    "/apiHub/scheduling/v1/companies/{companyId}/openShifts": {
      "get": {
        "tags": [
          "Open Shifts"
        ],
        "summary": "Get Open Shifts",
        "description": "**Summary Description**\n\nThe GET Open Shifts endpoint returns all shifts that are not currently assigned to an employee. The response includes each open shift and the total number available, allowing supervisors and managers to determine how many shifts can be assigned.\n\n**Use cases:**\n- Managers can retrieve a list of unassigned shifts and make them available for employees to claim.\n- The endpoint can be used in a third-party system where employees view and request available shifts. Allocation can follow predefined rules such as seniority or skill requirements.\n- The endpoint provides skill requirements for each open shift, enabling organizations to match shifts with qualified employees.",
        "x-explorer-enabled": false,
        "operationId": "GET_apiHub_scheduling_v1_companies_{companyId}_openShifts",
        "parameters": [
          {
            "name": "companyId",
            "in": "path",
            "description": "The Paylocity Company ID. This is the unique value provided by Paylocity to each specific Payroll Entity.",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "include",
            "in": "query",
            "description": "The sub-resources to include in the response.<br /> - sub-resources: breaks, note, claims",
            "allowEmptyValue": true,
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "A parseable filter expression involving fields, operators, and values to filter the result list by. <br /> - fields: startDateTime, positionKey<br /> - operators: eq, in, lt, gt, le, ge, and, or",
            "allowEmptyValue": true,
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "includeTotalCount",
            "in": "query",
            "description": "When provided and set to true will cause the API to return the X-Pcty-Total-Count header in the response which will be set to the total number of resources available even if only a subset of those were returned. The default is false.",
            "allowEmptyValue": true,
            "style": "form",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of resources to include in the response.  The default is 25.",
            "allowEmptyValue": true,
            "style": "form",
            "schema": {
              "maximum": 2147483647,
              "exclusiveMaximum": false,
              "minimum": 0,
              "exclusiveMinimum": false,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of resources to skip when returning paginated results.  The default is 0.",
            "allowEmptyValue": true,
            "style": "form",
            "schema": {
              "maximum": 2147483647,
              "exclusiveMaximum": false,
              "minimum": 0,
              "exclusiveMinimum": false,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "A comma-separated, xpath-like formatting string that identifies the fields that you want the API to use for sorting the resources when they are returned. The default value can vary from API to API.",
            "allowEmptyValue": true,
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "Authorization token. Ex. Bearer ...",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "string",
              "default": "Bearer JWT_GOES_HERE"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/OpenShiftV1Model"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Error400Model"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "500": {
            "description": "Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Error500Model"
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Error400Model": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "A unique code, within an API, that identifies what went wrong.\r\nThis value can be used for logic branching within client code\r\nto prevent the need to parse message values."
          },
          "message": {
            "type": "string",
            "description": "A message indicating what went wrong that can be presented to an end user."
          },
          "moreInfoUrl": {
            "type": "string",
            "description": "When provided, this will specific a URL that can be accessed to learn more\r\nabout this specific error."
          },
          "exception": {
            "$ref": "#/components/schemas/ExceptionModel"
          },
          "fields": {
            "type": "string",
            "description": "A comma-separated, xpath-like formatting string that identifies the fields that you \r\nwant returned in your response.  For example, ?fields=firstName would only return\r\nthe firstName field in the response.  'firstName,lastName' would return both the first and\r\nlast names.  And 'company(name)' would only return the company.name attribute."
          },
          "options": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OptionModel"
            },
            "description": "When an error is related to an invalid value that was provided, this attribute\r\nmay be included and provide the available options to use."
          }
        },
        "additionalProperties": false,
        "description": "This class represents the error model that will be used when returning\r\na 400 error (client input invalid) within a Paylocity RESTful API."
      },
      "Error500Model": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "A unique code, within an API, that identifies what went wrong.\r\nThis value can be used for logic branching within client code\r\nto prevent the need to parse message values."
          },
          "message": {
            "type": "string",
            "description": "A message indicating what went wrong that can be presented to an end user."
          },
          "moreInfoUrl": {
            "type": "string",
            "description": "When provided, this will specific a URL that can be accessed to learn more\r\nabout this specific error."
          },
          "exception": {
            "$ref": "#/components/schemas/ExceptionModel"
          },
          "errorId": {
            "type": "string",
            "description": "A unique identifier that can be used to search the logs to find the specific\r\nerror details that highlight what occurred."
          }
        },
        "additionalProperties": false,
        "description": "This class represents the error model that will be used when returning\r\na 500 error (server failure) within a Paylocity RESTful API."
      },
      "ExceptionModel": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of the exception."
          },
          "message": {
            "type": "string",
            "description": "The message describing the exception."
          },
          "source": {
            "type": "string",
            "description": "The source of the exception."
          },
          "stackTrace": {
            "type": "string",
            "description": "The stack trace of the exception."
          },
          "innerException": {
            "$ref": "#/components/schemas/ExceptionModel"
          }
        },
        "additionalProperties": false,
        "description": "This class represents the full set of properties that could be returned\r\nas a part of an error coming back from a Paylocity RESTful API. Optional\r\nproperties will be ignored during serialization when they are null"
      },
      "OpenShiftBreakV1Model": {
        "type": "object",
        "properties": {
          "startDateTime": {
            "type": "string",
            "description": "The scheduled start time for each break, formatted as an ISO 8601 date and time."
          },
          "duration": {
            "type": "integer",
            "description": "The duration of each break, typically measured in minutes.",
            "format": "int32"
          },
          "payType": {
            "type": "string",
            "description": "The type of pay (e.g., regular, overtime) applicable during the break."
          }
        },
        "additionalProperties": false
      },
      "OpenShiftClaimV1Model": {
        "type": "object",
        "properties": {
          "claimId": {
            "type": "integer",
            "description": "Numeric identifier for the claim.",
            "format": "int32"
          },
          "stackId": {
            "type": "string",
            "description": "Unique identifier for the stack associated with the claim."
          },
          "employee": {
            "$ref": "#/components/schemas/OpenShiftEmployeeV1Model"
          },
          "status": {
            "type": "string",
            "description": "The current status of the claim (e.g., pending, approved, denied)."
          },
          "statusNote": {
            "type": "string",
            "description": "Additional note regarding the status of the claim."
          },
          "type": {
            "type": "string",
            "description": "The type of claim being made (e.g., selected, disputed)."
          },
          "dateCreatedUtc": {
            "type": "string",
            "description": "The date and time the claim was created, in Coordinated Universal Time (UTC)."
          }
        },
        "additionalProperties": false
      },
      "OpenShiftEmployeeV1Model": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "string",
            "description": "Identifier of the company to which the task is assigned."
          },
          "employeeId": {
            "type": "string",
            "description": "Identifier of the employee to whom the task is assigned within the company."
          }
        },
        "additionalProperties": false
      },
      "OpenShiftV1Model": {
        "type": "object",
        "properties": {
          "stackId": {
            "type": "string",
            "description": "Unique identifier for the stack.",
            "x-pcty-filterable": false
          },
          "quantity": {
            "type": "integer",
            "description": "The number of units, items, or tasks, depending on the context.",
            "format": "int32",
            "x-pcty-filterable": false
          },
          "startDateTime": {
            "type": "string",
            "description": "The scheduled start date and time for the task or event.",
            "format": "date-time",
            "x-pcty-filterable": true,
            "x-pcty-filter-operators": "gt,ge,lt,le"
          },
          "duration": {
            "type": "integer",
            "description": "The length of time the task or event is scheduled to take, measured in minutes.",
            "format": "int32",
            "x-pcty-filterable": false
          },
          "isPublished": {
            "type": "boolean",
            "description": "Indicates whether the information has been published or made public.",
            "x-pcty-filterable": false
          },
          "scheduleId": {
            "type": "integer",
            "description": "Numeric identifier for the schedule associated with the task or event.",
            "format": "int32",
            "x-pcty-filterable": false
          },
          "costCenters": {
            "type": "array",
            "description": "A list of unique identifiers for cost centers associated with the task or event.",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "x-pcty-filterable": false
          },
          "positionKey": {
            "type": "integer",
            "description": "A numeric key representing the position associated with the task or event.",
            "format": "int32",
            "x-pcty-filterable": true,
            "x-pcty-filter-operators": "eq,in"
          },
          "hasNote": {
            "type": "boolean",
            "description": "A boolean flag indicating whether an additional note is attached.",
            "x-pcty-filterable": false
          },
          "note": {
            "type": "string",
            "description": "The content of the additional note, if applicable.",
            "x-pcty-filterable": false
          },
          "isEmployeeNote": {
            "type": "boolean",
            "description": "A boolean flag indicating whether the note is provided by the employee.",
            "x-pcty-filterable": false
          },
          "breaks": {
            "type": "array",
            "description": "A list of breaks associated with the open shift.",
            "items": {
              "$ref": "#/components/schemas/OpenShiftBreakV1Model"
            },
            "x-pcty-filterable": false
          },
          "claims": {
            "type": "array",
            "description": "A list of claims submitted for the open shift.",
            "items": {
              "$ref": "#/components/schemas/OpenShiftClaimV1Model"
            },
            "x-pcty-filterable": false
          },
          "templateAssignmentId": {
            "type": "string",
            "description": "Unique identifier for a template assignment associated with the task or event.",
            "x-pcty-filterable": false
          }
        },
        "additionalProperties": false
      },
      "OptionModel": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "The code value for the option."
          },
          "description": {
            "type": "string",
            "description": "The description for the option."
          }
        },
        "additionalProperties": false,
        "description": "This class represents the code/description pair that can be used when\r\nproviding a list of options for a field within an error."
      }
    }
  }
}
```