7shifts Users API

Users (employees) scoped to a company.

OpenAPI Specification

7shifts-users-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: 7shifts Availability Users 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: Users
  description: Users (employees) scoped to a company.
paths:
  /v2/company/{company_id}/users:
    get:
      tags:
      - Users
      operationId: listUsers
      summary: List Users
      parameters:
      - $ref: '#/components/parameters/CompanyIdPath'
      - name: modified_since
        in: query
        required: false
        description: Filter by modification date (YYYY-MM-DD).
        schema:
          type: string
      - name: location_id
        in: query
        required: false
        description: Filter by location (mutually exclusive with department_id and role_id).
        schema:
          type: integer
          format: int64
      - name: department_id
        in: query
        required: false
        description: Filter by department (mutually exclusive with location_id and role_id).
        schema:
          type: integer
          format: int64
      - name: role_id
        in: query
        required: false
        description: Filter by role (mutually exclusive with location_id and department_id).
        schema:
          type: integer
          format: int64
      - name: status
        in: query
        required: false
        description: User status filter.
        schema:
          type: string
          enum:
          - active
          - inactive
      - name: name
        in: query
        required: false
        description: Partial or full employee name filter.
        schema:
          type: string
      - name: sort_by
        in: query
        required: false
        description: Sort field and direction (e.g. firstname.asc,lastname.desc).
        schema:
          type: string
      - $ref: '#/components/parameters/Cursor'
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/ApiVersionHeader'
      - $ref: '#/components/parameters/CompanyGuidHeader'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/User'
                  meta:
                    $ref: '#/components/schemas/CursorMeta'
        '403':
          description: Forbidden
      security:
      - bearerAuth: []
    post:
      tags:
      - Users
      operationId: createUser
      summary: Create User
      parameters:
      - $ref: '#/components/parameters/CompanyIdPath'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/User'
      responses:
        '201':
          description: Created
        '400':
          description: Bad request
      security:
      - bearerAuth: []
  /v2/company/{company_id}/users/{identifier}:
    get:
      tags:
      - Users
      operationId: retrieveUser
      summary: Retrieve User
      parameters:
      - $ref: '#/components/parameters/CompanyIdPath'
      - name: identifier
        in: path
        required: true
        description: User identifier. Accepts either a 7shifts user ID or a punch ID with the prefix "punch:".
        schema:
          type: string
      - name: include_inactive
        in: query
        required: false
        description: Include inactive users in the response.
        schema:
          type: boolean
      - $ref: '#/components/parameters/ApiVersionHeader'
      - $ref: '#/components/parameters/CompanyGuidHeader'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/User'
        '400':
          description: Bad request
        '403':
          description: Forbidden
        '404':
          description: Not found
      security:
      - bearerAuth: []
    put:
      tags:
      - Users
      operationId: updateUser
      summary: Update User
      parameters:
      - $ref: '#/components/parameters/CompanyIdPath'
      - name: identifier
        in: path
        required: true
        description: User identifier.
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/User'
      responses:
        '200':
          description: Updated
        '400':
          description: Bad request
        '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
    ApiVersionHeader:
      name: x-api-version
      in: header
      required: false
      description: 7shifts API version (YYYY-MM-DD).
      schema:
        type: string
    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
    CompanyGuidHeader:
      name: x-company-guid
      in: header
      required: false
      description: Company GUID.
      schema:
        type: string
        format: uuid
  schemas:
    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
    User:
      title: User
      type: object
      properties:
        id:
          type: integer
          format: int64
        first_name:
          type: string
          maxLength: 80
        last_name:
          type: string
          maxLength: 80
        email:
          type: string
          format: email
          maxLength: 155
        mobile_number:
          type: string
          description: Phone number for notifications.
        active:
          type: boolean
          description: Login permission status.
        type:
          type: string
          enum:
          - employee
          - asst_manager
          - manager
          - employer
        invite_status:
          type: string
          enum:
          - accepted
          - pending
          - required
          - missing_contact_info
        employee_id:
          type: string
          description: Company-assigned employee identifier.
        hourly_wage:
          type: integer
          description: Wage in cents.
        skill_level:
          type: integer
        created:
          type: string
          format: date-time
        modified:
          type: string
          format: date-time
  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: {}