7shifts Shifts API

Scheduled shifts assigned to users.

OpenAPI Specification

7shifts-shifts-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: 7shifts Availability Shifts API
  version: '2.0'
  description: 7shifts is a restaurant employee scheduling, time-tracking, and team management platform. The 7shifts API v2 is a REST API for managing companies, locations, departments, roles, users (employees), schedules, shifts, time punches, wages, time off, availability, sales receipts, forecasts, tasks, tip pools, and webhooks. Authentication uses Bearer access tokens for internal access or OAuth 2.0 client credentials for partner integrations. Endpoints documented here were confirmed from the 7shifts developer reference (developers.7shifts.com) and its llms.txt index. Most resources are scoped to a company via the /v2/company/{company_id} path prefix. Collection endpoints use cursor-based pagination via the cursor and limit query parameters. Date-based API versions are selected with the x-api-version header (YYYY-MM-DD).
  contact:
    name: 7shifts Developer Portal
    url: https://developers.7shifts.com/reference/introduction
  license:
    name: 7shifts API Terms
    url: https://www.7shifts.com/legal/terms-of-service
servers:
- url: https://api.7shifts.com
  description: 7shifts API production base URL
tags:
- name: Shifts
  description: Scheduled shifts assigned to users.
paths:
  /v2/company/{company_id}/shifts:
    get:
      tags:
      - Shifts
      operationId: listShifts
      summary: List Shifts
      parameters:
      - $ref: '#/components/parameters/CompanyIdPath'
      - name: location_id
        in: query
        required: false
        description: Filter by location.
        schema:
          type: integer
          format: int64
      - name: department_id
        in: query
        required: false
        description: Filter by department.
        schema:
          type: integer
          format: int64
      - name: role_id
        in: query
        required: false
        description: Filter by role.
        schema:
          type: integer
          format: int64
      - name: user_id
        in: query
        required: false
        description: Filter by assigned user.
        schema:
          type: integer
          format: int64
      - name: start[gte]
        in: query
        required: false
        description: Filter by shift start time greater than or equal to (ISO8601).
        schema:
          type: string
          format: date-time
      - name: start[lte]
        in: query
        required: false
        description: Filter by shift start time less than or equal to (ISO8601).
        schema:
          type: string
          format: date-time
      - name: modified_since
        in: query
        required: false
        description: Return shifts modified after the specified datetime.
        schema:
          type: string
          format: date-time
      - name: open
        in: query
        required: false
        description: Filter for unassigned (open) shifts.
        schema:
          type: boolean
      - name: include_draft
        in: query
        required: false
        description: Include draft shifts.
        schema:
          type: boolean
      - $ref: '#/components/parameters/Cursor'
      - $ref: '#/components/parameters/Limit'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Shift'
                  meta:
                    $ref: '#/components/schemas/CursorMeta'
      security:
      - bearerAuth: []
    post:
      tags:
      - Shifts
      operationId: createShift
      summary: Create Shift
      parameters:
      - $ref: '#/components/parameters/CompanyIdPath'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Shift'
      responses:
        '201':
          description: Created
        '400':
          description: Bad request
      security:
      - bearerAuth: []
  /v2/company/{company_id}/shifts/{shift_id}:
    get:
      tags:
      - Shifts
      operationId: retrieveShift
      summary: Retrieve Shift
      parameters:
      - $ref: '#/components/parameters/CompanyIdPath'
      - name: shift_id
        in: path
        required: true
        description: Shift identifier.
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Shift'
        '404':
          description: Not found
      security:
      - bearerAuth: []
    delete:
      tags:
      - Shifts
      operationId: deleteShift
      summary: Delete Shift
      parameters:
      - $ref: '#/components/parameters/CompanyIdPath'
      - name: shift_id
        in: path
        required: true
        description: Shift identifier.
        schema:
          type: integer
          format: int64
      responses:
        '204':
          description: Deleted
        '404':
          description: Not found
      security:
      - bearerAuth: []
components:
  parameters:
    Cursor:
      name: cursor
      in: query
      required: false
      description: Pagination cursor for the next or previous page.
      schema:
        type: string
    CompanyIdPath:
      name: company_id
      in: path
      required: true
      description: Company identifier.
      schema:
        type: integer
        format: int64
    Limit:
      name: limit
      in: query
      required: false
      description: Results per page (1-500, default 100; 20 for some collections).
      schema:
        type: integer
        minimum: 1
        maximum: 500
        default: 100
  schemas:
    Break:
      title: Break
      type: object
      properties:
        id:
          type: integer
          format: int64
        in:
          type: string
          format: date-time
        out:
          type: string
          format: date-time
          nullable: true
        paid:
          type: boolean
    Shift:
      title: Shift
      type: object
      properties:
        id:
          type: integer
          format: int64
        user_id:
          type: integer
          format: int64
          nullable: true
        location_id:
          type: integer
          format: int64
        department_id:
          type: integer
          format: int64
        role_id:
          type: integer
          format: int64
        start:
          type: string
          format: date-time
          description: Start datetime of the shift. UTC in ISO8601 format.
        end:
          type: string
          format: date-time
          description: End datetime of the shift. UTC in ISO8601 format.
        hourly_wage:
          type: integer
          description: The hourly wage for this shift, in cents.
        draft:
          type: boolean
          description: Publication status indicator.
        open:
          type: boolean
          description: Indicates an unassigned shift available for requests.
        station:
          type: string
          nullable: true
        attendance_status:
          type: string
          enum:
          - none
          - sick
          - no_show
          - late
        breaks:
          type: array
          items:
            $ref: '#/components/schemas/Break'
        created:
          type: string
          format: date-time
        modified:
          type: string
          format: date-time
    CursorMeta:
      title: Cursor Meta
      type: object
      description: Cursor-based pagination metadata.
      properties:
        cursor:
          type: object
          properties:
            current:
              type: string
            next:
              type: string
              nullable: true
            prev:
              type: string
              nullable: true
        count:
          type: integer
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Access token obtained from /oauth2/token passed as a Bearer token.
    oauth2:
      type: oauth2
      description: OAuth 2.0 with client_credentials, password, authorization_code, and refresh_token grant types.
      flows:
        clientCredentials:
          tokenUrl: https://api.7shifts.com/oauth2/token
          scopes: {}