Clockify Workspace API

The Workspace API from Clockify — 8 operation(s) for workspace.

OpenAPI Specification

clockify-workspace-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  description: "## Introduction\nBy using this REST API, you can easily integrate Clockify with your own add-ons, push and pull data\nbetween Clockify and other tools, and create custom add-ons on [CAKE.com Marketplace](https://marketplace.cake.com).\nWhether you’re looking to automate time tracking, generate custom reports, or build other custom\nintegrations, our API provides the flexibility and power you need to get the job done. If you\nhave any questions or run into any issues while using our API, don’t hesitate to reach out to us for help.\nYou can also post questions on Stack Overflow with the Clockify tag to get help from the community.\n## Authentication\nTo authenticate your requests to your API, make sure to include either the ‘X-Api-Key’ or the\n‘X-Addon-Token’ in the request header, containing your API or Addon key. If your workspace is\non a subdomain (e.g. subdomain.clockify.me), you’ll need to generate a new API key in your\nProfile Settings that will work specifically for that workspace. This ensures that you’re\naccessing data from the correct workspace and helps maintain the security of your data.\n## Webhooks\nWebhooks can enhance your workflow by keeping your add-on up-to-date with the latest changes in\nClockify. With Clockify’s webhooks you can receive real-time notifications when certain events such as\nstarting a timer or deleting a time entry occur in Clockify.\nDepending on the workspace plan, workspace owners and admins can create:\n\n* Up to 3 webhooks on **FREE** plan\n* Up to 10 webhooks per user, with a total of 100 webhooks per entire workspace\non **BASIC**, **STANDARD** and **PRO** plans\n* Up to 100 webhooks per user, with a total of 300 webhooks per entire workspace on **ENTERPRISE** plan\n\n## Rate limiting\nOur REST API has a specific rate limit of 50 requests per second (by addon on one workspace) when\naccessed using X-Addon-Token. Exceeding this limit will result in an error message with the description\n\"Too many requests\".\n## Pagination\nOur REST API supports pagination for all synchronous GET endpoints that retrieve lists of entities.\nWhen an endpoint accepts the `page` and `pageSize` query parameters, it will return a paginated response.\n\nTo control the data returned in a paginated request, you can use the following optional query parameters.\n\n- **page** (integer): The page number you wish to retrieve. This is 1-indexed. If this parameter is omitted,\nthe API will default to the first page (page=1).\n- **pageSize** (integer): The number of items to include on each page. If this parameter is omitted,\na default page size will be used.\n\nEvery response from an endpoint that supports these parameters will include a custom `Last-Page` header.\nThis header provides a simple way to determine if you have reached the end of the data set.\n\n- **true:** The current page is the final page; no more data is available.\n- **false:** Additional pages can be fetched.\n## API URLs\nRefer to the list on what URL to use base on the subdomain and data region settings of your workspace.\n* Global - can be used by workspaces with or without subdomain.\n    * Regular: https://api.clockify.me/api/v1/file/image\n    * Reports: https://reports.api.clockify.me/v1/workspaces/{workspaceId}/reports/detailed\n* Regional\n    * Non-subdomain\n        * Regular: https://euc1.clockify.me/api/v1/file/image\n        * Reports: https://use2.clockify.me/report/v1/workspaces/{workspaceId}/reports/detailed\n    * Subdomain\n        * Regular: https://euc1.clockify.me/api/v1/file/image\n        * Reports: https://yoursubdomainname.clockify.me/report/v1/workspaces/{workspaceId}/reports/detailed\n* Developer\n    * Regular: https://developer.clockify.me/api/v1/file/image\n    * Reports: https://developer.clockify.me/report/v1/workspaces/{workspaceId}/reports/detailed\n## Regional Server Prefixes\nIf your workspace is in a specific region, you need to change your URL prefix to access v1 API endpoints.\nFor example, this is how **backend** api [v1/file/image](#tag/User/operation/uploadImage) endpoint\nwould look in EU region:\n[https://euc1.clockify.me/api/v1/file/image](https://euc1.clockify.me)\n\nBelow are the available regional server prefixes:\n* **EU (Germany)**: euc1\n* **USA**: use2\n* **UK**: euw2\n* **AU**: apse2\n\n\n## Breaking changes\nBreaking changes in APIs are modifications that disrupt existing integrations,\nrequiring users to update their applications to maintain functionality.\nThese changes can lead to failures or unexpected results if not addressed.\nSee the list of [breaking changes](breaking-changes/).\n\n## Experimental APIs\nThe experimental API has been thoroughly tested and is ready for use in production. However, please note that user feedback may lead to changes in the API’s structure or functionality. If you choose to use the experimental API, be prepared to modify your application code accordingly to accommodate any updates."
  title: Clockify Approval Workspace API
  version: v1
  x-logo:
    altText: Clockify logo
    url: https://clockify.me/downloads/clockify_logo_primary_black_margin.png
tags:
- name: Workspace
  x-displayName: Workspace
paths:
  /v1/workspaces:
    servers:
    - url: https://api.clockify.me/api
    get:
      operationId: getWorkspacesOfUser
      parameters:
      - description: If provided, you'll get a filtered list of workspaces where you have any of the specified roles. Owners are not counted as admins when filtering.
        example:
        - WORKSPACE_ADMIN
        - OWNER
        in: query
        name: roles
        required: false
        schema:
          type: string
          enum:
          - WORKSPACE_ADMIN
          - OWNER
          - TEAM_MANAGER
          - PROJECT_MANAGER
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/WorkspaceDtoV1'
          description: OK
      security:
      - MarketplaceKeyAuth: []
      - ApiKeyAuth: []
      summary: Get all my workspaces
      tags:
      - Workspace
    post:
      operationId: createWorkspace
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateWorkspaceRequestV1'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceDtoV1'
          description: Created
      security:
      - ApiKeyAuth: []
      summary: Add a workspace
      tags:
      - Workspace
  /v1/workspaces/{workspaceId}:
    servers:
    - url: https://api.clockify.me/api
    get:
      operationId: getWorkspaceOfUser
      parameters:
      - description: Represents a workspace identifier across the system.
        example: 64a687e29ae1f428e7ebe303
        in: path
        name: workspaceId
        required: true
        schema:
          type: string
          description: Represents a workspace identifier across the system.
          example: 64a687e29ae1f428e7ebe303
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceDtoV1'
          description: OK
      summary: Get workspace info
      tags:
      - Workspace
      security:
      - ApiKeyAuth: []
      - AddonKeyAuth: []
  /v1/workspaces/{workspaceId}/cost-rate:
    servers:
    - url: https://api.clockify.me/api
    put:
      operationId: setWorkspaceCostRate
      parameters:
      - description: Represents a workspace identifier across the system.
        example: 64a687e29ae1f428e7ebe303
        in: path
        name: workspaceId
        required: true
        schema:
          type: string
          description: Represents a workspace identifier across the system.
          example: 64a687e29ae1f428e7ebe303
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CostRateRequestV1'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceDtoV1'
          description: OK
      summary: Update workspace cost rate
      tags:
      - Workspace
      security:
      - ApiKeyAuth: []
      - AddonKeyAuth: []
  /v1/workspaces/{workspaceId}/hourly-rate:
    servers:
    - url: https://api.clockify.me/api
    put:
      operationId: setWorkspaceHourlyRate
      parameters:
      - description: Represents a workspace identifier across the system.
        example: 64a687e29ae1f428e7ebe303
        in: path
        name: workspaceId
        required: true
        schema:
          type: string
          description: Represents a workspace identifier across the system.
          example: 64a687e29ae1f428e7ebe303
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RateWithCurrencyRequestV1'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceDtoV1'
          description: OK
      summary: Update workspace billable rate
      tags:
      - Workspace
      security:
      - ApiKeyAuth: []
      - AddonKeyAuth: []
  /v1/workspaces/{workspaceId}/users:
    servers:
    - url: https://api.clockify.me/api
    post:
      description: You can add users to a workspace via API only if that workspace has a paid subscription. If the workspace has a paid subscription, you can add as many users as you want but you are limited by the number of paid user seats on that workspace.
      operationId: addUsers
      parameters:
      - description: Represents a workspace identifier across the system.
        example: 64a687e29ae1f428e7ebe303
        in: path
        name: workspaceId
        required: true
        schema:
          type: string
          description: Represents a workspace identifier across the system.
          example: 64a687e29ae1f428e7ebe303
      - description: Indicates whether to send an email when user is added to the workspace.
        in: query
        name: send-email
        required: true
        schema:
          type: string
          default: 'true'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddUserToWorkspaceRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceDtoV1'
          description: OK
      summary: Add user to a workspace
      tags:
      - Workspace
      security:
      - ApiKeyAuth: []
      - AddonKeyAuth: []
  /v1/workspaces/{workspaceId}/users/{userId}:
    servers:
    - url: https://api.clockify.me/api
    put:
      operationId: updateUserStatus
      parameters:
      - description: Represents a workspace identifier across the system.
        example: 64a687e29ae1f428e7ebe303
        in: path
        name: workspaceId
        required: true
        schema:
          type: string
          description: Represents a workspace identifier across the system.
          example: 64a687e29ae1f428e7ebe303
      - description: Represents a user identifier across the system.
        example: 89b687e29ae1f428e7ebe912
        in: path
        name: userId
        required: true
        schema:
          type: string
          description: Represents a user identifier across the system.
          example: 89b687e29ae1f428e7ebe912
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateUserStatusRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceDtoV1'
          description: OK
      summary: Update a user's status
      tags:
      - Workspace
      security:
      - ApiKeyAuth: []
      - AddonKeyAuth: []
  /v1/workspaces/{workspaceId}/users/{userId}/cost-rate:
    servers:
    - url: https://api.clockify.me/api
    put:
      operationId: setCostRateForUser
      parameters:
      - description: Represents a workspace identifier across the system.
        example: 64a687e29ae1f428e7ebe303
        in: path
        name: workspaceId
        required: true
        schema:
          type: string
          description: Represents a workspace identifier across the system.
          example: 64a687e29ae1f428e7ebe303
      - description: Represents a user identifier across the system.
        example: 89b687e29ae1f428e7ebe912
        in: path
        name: userId
        required: true
        schema:
          type: string
          description: Represents a user identifier across the system.
          example: 89b687e29ae1f428e7ebe912
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CostRateRequestV1'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceDtoV1'
          description: OK
      summary: Update a user's cost rate
      tags:
      - Workspace
      security:
      - ApiKeyAuth: []
      - AddonKeyAuth: []
  /v1/workspaces/{workspaceId}/users/{userId}/hourly-rate:
    servers:
    - url: https://api.clockify.me/api
    put:
      operationId: setHourlyRateForUser
      parameters:
      - description: Represents a workspace identifier across the system.
        example: 64a687e29ae1f428e7ebe303
        in: path
        name: workspaceId
        required: true
        schema:
          type: string
          description: Represents a workspace identifier across the system.
          example: 64a687e29ae1f428e7ebe303
      - description: Represents a user identifier across the system.
        example: 89b687e29ae1f428e7ebe912
        in: path
        name: userId
        required: true
        schema:
          type: string
          description: Represents a user identifier across the system.
          example: 89b687e29ae1f428e7ebe912
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HourlyRateRequestV1'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceDtoV1'
          description: OK
      summary: Update a user's hourly rate
      tags:
      - Workspace
      security:
      - ApiKeyAuth: []
      - AddonKeyAuth: []
components:
  schemas:
    WorkspaceSettingsDtoV1:
      type: object
      properties:
        activeBillableHours:
          type: boolean
          description: Indicates whether billable hours is active.
          default: false
        adminOnlyPages:
          type: string
          description: Represents a unique list of protected page enums.
          example: '["PROJECT","TEAM","REPORTS"]'
          enum:
          - PROJECT
          - TEAM
          - REPORTS
        automaticLock:
          $ref: '#/components/schemas/AutomaticLockDtoV1'
        canSeeTimeSheet:
          type: boolean
          description: Indicates whether timesheets are visible or not.
          default: false
        canSeeTracker:
          type: boolean
          description: Indicates whether time trackers are visible or not.
          default: false
        currencyFormat:
          type: string
          description: Represents a clockify currency format enum.
          example: CURRENCY_SPACE_VALUE
          enum:
          - CURRENCY_SPACE_VALUE
          - VALUE_SPACE_CURRENCY
          - CURRENCY_VALUE
          - VALUE_CURRENCY
        defaultBillableProjects:
          type: boolean
          description: Indicates whether projects are billable by default.
          default: false
        durationFormat:
          type: string
          description: Represents a clockify duration format enum. Used to set Duration format instead of setting decimalFormat and trackTimeDownToSecond.
          example: FULL
          enum:
          - FULL
          - COMPACT
          - DECIMAL
        entityCreationPermissions:
          $ref: '#/components/schemas/EntityCreationPermissionsDtoV1'
        forceDescription:
          type: boolean
          description: Indicates whether description are forced or not.
          default: false
        forceProjects:
          type: boolean
          description: Indicates whether projects are forced or not.
          default: false
        forceTags:
          type: boolean
          description: Indicates whether tags are forced or not.
          default: false
        forceTasks:
          type: boolean
          description: Indicates whether tasks are forced or not.
          default: false
        isProjectPublicByDefault:
          type: boolean
        lockTimeEntries:
          type: string
          example: '2024-02-25T23:00:00Z'
        lockTimeZone:
          type: string
          example: Europe/Belgrade
        multiFactorEnabled:
          type: boolean
          description: Indicates whether two-factor authentication is enabled or not.
          default: false
        numberFormat:
          type: string
          description: Represents a clockify number format enum.
          example: COMMA_PERIOD
          enum:
          - COMMA_PERIOD
          - PERIOD_COMMA
          - QUOTATION_MARK_PERIOD
          - SPACE_COMMA
        onlyAdminsCanChangeBillableStatus:
          type: boolean
          description: Indicates whether only admins can change billable status.
          default: false
        onlyAdminsCreateProject:
          type: boolean
          description: Indicates whether only admins can create projects.
          default: false
        onlyAdminsCreateTag:
          type: boolean
          description: Indicates whether only admins can create tags.
          default: false
        onlyAdminsCreateTask:
          type: boolean
          description: Indicates whether only admins can create task.
          default: false
        onlyAdminsSeeAllTimeEntries:
          type: boolean
          description: Indicates whether only admins can see all time entries.
          default: false
        onlyAdminsSeeBillableRates:
          type: boolean
          description: Indicates whether only admins can see billable rates.
          default: false
        onlyAdminsSeeDashboard:
          type: boolean
          description: Indicates whether only admins can see dashboard.
          default: false
        onlyAdminsSeePublicProjectsEntries:
          type: boolean
          description: Indicates whether only admins can see public project entries.
          default: false
        projectFavorites:
          type: boolean
          description: Indicates whether project favorites are allowed.
          default: false
        projectGroupingLabel:
          type: string
          description: Represents a project grouping label.
          example: Project Label
        projectLabel:
          type: string
          description: Represents a project label.
        projectPickerSpecialFilter:
          type: boolean
          description: Indicates whether project picker special filter is enabled.
          default: false
        round:
          $ref: '#/components/schemas/RoundDto'
        taskLabel:
          type: string
          description: Represents a task label.
        timeRoundingInReports:
          type: boolean
          description: Indicates whether time rounding is enabled in reports.
          default: false
        timeTrackingMode:
          type: string
          description: Represents a time tracking mode enum.
          example: DEFAULT
          enum:
          - DEFAULT
          - STOPWATCH_ONLY
        trackTimeDownToSecond:
          type: boolean
          description: Indicates whether time tracking is seconds-accurate. This is now deprecated and durationFormat can now be used to manage Time Duration Format.
          deprecated: true
          default: false
        workingDays:
          uniqueItems: true
          type: array
          description: Represents a list of working days.
          items:
            type: string
            description: Represents a list of working days.
            enum:
            - MONDAY
            - TUESDAY
            - WEDNESDAY
            - THURSDAY
            - FRIDAY
            - SATURDAY
            - SUNDAY
      description: "Workspace settings also include Time Duration Format settings.\n\nSetting Time Duration Format by changing the boolean fields\ndecimalFormat and trackTimeDownToSecond is now deprecated.\n\nTime Duration Format can be set by durationFormat enum field.\n\nThree different Time Duration modes will still map the boolean fields:\n\n    1. Full (hh:mm:ss) -> decimalFormat = false, trackTimeDownToSecond = true,\n\n    2. Compact (h:mm) -> decimalFormat = false, trackTimeDownToSecond = false,\n\n    3. Decimal (h:hh) -> decimalFormat = true, trackTimeDownToSecond = true\n\n"
    AutomaticLockDtoV1:
      type: object
      properties:
        changeDay:
          type: string
          description: Represents a day of the week.
          example: FRIDAY
          enum:
          - MONDAY
          - TUESDAY
          - WEDNESDAY
          - THURSDAY
          - FRIDAY
          - SATURDAY
          - SUNDAY
        dayOfMonth:
          type: integer
          description: Represents a day of month as integer.
          format: int32
          example: 15
        firstDay:
          type: string
          description: Represents a day of the week.
          example: MONDAY
          enum:
          - MONDAY
          - TUESDAY
          - WEDNESDAY
          - THURSDAY
          - FRIDAY
          - SATURDAY
          - SUNDAY
        olderThanPeriod:
          type: string
          description: Represents a time entry automatic lock period enum.
          example: DAYS
          enum:
          - DAYS
          - WEEKS
          - MONTHS
        olderThanValue:
          type: integer
          description: Represents an integer as the criteria for locking time entries.
          format: int32
          example: 5
        type:
          type: string
          description: Represents a time entry automatic lock type enum.
          example: WEEKLY
          enum:
          - WEEKLY
          - MONTHLY
          - OLDER_THAN
      description: Represents an automatic lock object.
    UpdateUserStatusRequest:
      required:
      - status
      type: object
      properties:
        status:
          type: string
          description: Represents membership status.
          example: ACTIVE
          enum:
          - ACTIVE
          - INACTIVE
    CostRateRequestV1:
      required:
      - amount
      type: object
      properties:
        amount:
          minimum: 0
          type: integer
          description: Represents an amount as integer.
          format: int32
          example: 20000
        since:
          type: string
          description: Represents a date and time in yyyy-MM-ddThh:mm:ssZ format.
          example: '2020-01-01T00:00:00Z'
    EntityCreationPermissionsDtoV1:
      type: object
      properties:
        whoCanCreateProjectsAndClients:
          $ref: '#/components/schemas/EntityCreationPermission'
        whoCanCreateTags:
          $ref: '#/components/schemas/EntityCreationPermission'
        whoCanCreateTasks:
          $ref: '#/components/schemas/EntityCreationPermission'
      description: Represents an entity creation permission object.
    RoundDto:
      type: object
      properties:
        minutes:
          type: string
          example: '15'
        round:
          type: string
          example: Round to nearest
      description: Represents a time rounding object.
    RateWithCurrencyRequestV1:
      required:
      - amount
      - currency
      type: object
      properties:
        amount:
          minimum: 0
          type: integer
          description: Represents an amount as integer.
          format: int32
          example: 2000
        currency:
          maxLength: 100
          minLength: 1
          type: string
          description: Represents a currency.
          example: USD
          default: USD
        since:
          type: string
          description: Represents a date and time in yyyy-MM-ddThh:mm:ssZ format.
          example: '2020-01-01T00:00:00Z'
    Feature:
      type: object
      description: Represents a list of features.
      example:
      - ADD_TIME_FOR_OTHERS
      - ADMIN_PANEL
      - ALERTS
      - APPROVAL
      oneOf:
      - type: string
        enum:
        - ADD_TIME_FOR_OTHERS
        - ADMIN_PANEL
        - ALERTS
        - APPROVAL
        - AUDIT_LOG
        - AUTOMATIC_LOCK
        - BRANDED_REPORTS
        - BULK_EDIT
        - CUSTOM_FIELDS
        - CUSTOM_REPORTING
        - CUSTOM_SUBDOMAIN
        - CREATION_PERMISSIONS
        - DECIMAL_FORMAT
        - DISABLE_MANUAL_MODE
        - EDIT_MEMBER_PROFILE
        - EXCLUDE_NON_BILLABLE_FROM_ESTIMATE
        - EXPENSES
        - FILE_IMPORT
        - TIMESHEET_IMPORT
        - USER_IMPORT
        - HIDE_PAGES
        - HISTORIC_RATES
        - INVOICING
        - INVOICE_EMAILS
        - INVOICE_REMINDERS
        - LABOR_COST
        - LOCATIONS
        - MANAGER_ROLE
        - MULTI_FACTOR_AUTHENTICATION
        - PROJECT_BUDGET
        - PROJECT_TEMPLATES
        - GRANT_PROJECT_MANAGER_ROLE
        - PRIVATE_PROJECT_ACCESS
        - QUICKBOOKS_INTEGRATION
        - RECURRING_ESTIMATES
        - RECURRING_INVOICES
        - REQUIRED_FIELDS
        - SCHEDULED_REPORTS
        - SCHEDULING
        - SCREENSHOTS
        - SSO
        - SUMMARY_ESTIMATE
        - TARGETS_AND_REMINDERS
        - TASK_RATES
        - TIME_OFF
        - UNLIMITED_REPORTS
        - USER_CUSTOM_FIELDS
        - WHO_CAN_CHANGE_TIMEENTRY_BILLABILITY
        - BREAKS
        - KIOSK_SESSION_DURATION
        - KIOSK_PIN_REQUIRED
        - WHO_CAN_SEE_ALL_TIME_ENTRIES
        - WHO_CAN_SEE_PROJECT_STATUS
        - WHO_CAN_SEE_PUBLIC_PROJECTS_ENTRIES
        - WHO_CAN_SEE_TEAMS_DASHBOARD
        - WORKSPACE_LOCK_TIMEENTRIES
        - WORKSPACE_TIME_AUDIT
        - WORKSPACE_TIME_ROUNDING
        - KIOSK
        - KIOSK_SIX_DIGIT_PIN
        - KIOSK_QR_CODE
        - LIMITED_USERS
        - FORECASTING
        - TIME_TRACKING
        - ATTENDANCE_REPORT
        - WORKSPACE_TRANSFER
        - FAVORITE_ENTRIES
        - SPLIT_TIME_ENTRY
        - CLIENT_CURRENCY
        - SCHEDULING_FORECASTING
        - SCIM
        - UNLIMITED_USER_SEATS
        - BILLABLE_HOURS
        - PROJECT_ESTIMATE
        - CSV_EXPORT
        - XLSX_EXPORT
        - ONE_MONTH_RANGE_REPORTS
        - ONE_YEAR_RANGE_REPORTS
        - SHARED_REPORTS
      properties:
        ADD_TIME_FOR_OTHERS:
          type: string
          enum:
          - ADD_TIME_FOR_OTHERS
          - ADMIN_PANEL
          - ALERTS
          - APPROVAL
          - AUDIT_LOG
          - AUTOMATIC_LOCK
          - BRANDED_REPORTS
          - BULK_EDIT
          - CUSTOM_FIELDS
          - CUSTOM_REPORTING
          - CUSTOM_SUBDOMAIN
          - CREATION_PERMISSIONS
          - DECIMAL_FORMAT
          - DISABLE_MANUAL_MODE
          - EDIT_MEMBER_PROFILE
          - EXCLUDE_NON_BILLABLE_FROM_ESTIMATE
          - EXPENSES
          - FILE_IMPORT
          - TIMESHEET_IMPORT
          - USER_IMPORT
          - HIDE_PAGES
          - HISTORIC_RATES
          - INVOICING
          - INVOICE_EMAILS
          - INVOICE_REMINDERS
          - LABOR_COST
          - LOCATIONS
          - MANAGER_ROLE
          - MULTI_FACTOR_AUTHENTICATION
          - PROJECT_BUDGET
          - PROJECT_TEMPLATES
          - GRANT_PROJECT_MANAGER_ROLE
          - PRIVATE_PROJECT_ACCESS
          - QUICKBOOKS_INTEGRATION
          - RECURRING_ESTIMATES
          - RECURRING_INVOICES
          - REQUIRED_FIELDS
          - SCHEDULED_REPORTS
          - SCHEDULING
          - SCREENSHOTS
          - SSO
          - SUMMARY_ESTIMATE
          - TARGETS_AND_REMINDERS
          - TASK_RATES
          - TIME_OFF
          - UNLIMITED_REPORTS
          - USER_CUSTOM_FIELDS
          - WHO_CAN_CHANGE_TIMEENTRY_BILLABILITY
          - BREAKS
          - KIOSK_SESSION_DURATION
          - KIOSK_PIN_REQUIRED
          - WHO_CAN_SEE_ALL_TIME_ENTRIES
          - WHO_CAN_SEE_PROJECT_STATUS
          - WHO_CAN_SEE_PUBLIC_PROJECTS_ENTRIES
          - WHO_CAN_SEE_TEAMS_DASHBOARD
          - WORKSPACE_LOCK_TIMEENTRIES
          - WORKSPACE_TIME_AUDIT
          - WORKSPACE_TIME_ROUNDING
          - KIOSK
          - KIOSK_SIX_DIGIT_PIN
          - KIOSK_QR_CODE
          - LIMITED_USERS
          - FORECASTING
          - TIME_TRACKING
          - ATTENDANCE_REPORT
          - WORKSPACE_TRANSFER
          - FAVORITE_ENTRIES
          - SPLIT_TIME_ENTRY
          - CLIENT_CURRENCY
          - SCHEDULING_FORECASTING
          - SCIM
          - UNLIMITED_USER_SEATS
          - BILLABLE_HOURS
          - PROJECT_ESTIMATE
          - CSV_EXPORT
          - XLSX_EXPORT
          - ONE_MONTH_RANGE_REPORTS
          - ONE_YEAR_RANGE_REPORTS
          - SHARED_REPORTS
        ADMIN_PANEL:
          type: string
          enum:
          - ADD_TIME_FOR_OTHERS
          - ADMIN_PANEL
          - ALERTS
          - APPROVAL
          - AUDIT_LOG
          - AUTOMATIC_LOCK
          - BRANDED_REPORTS
          - BULK_EDIT
          - CUSTOM_FIELDS
          - CUSTOM_REPORTING
          - CUSTOM_SUBDOMAIN
          - CREATION_PERMISSIONS
          - DECIMAL_FORMAT
          - DISABLE_MANUAL_MODE
          - EDIT_MEMBER_PROFILE
          - EXCLUDE_NON_BILLABLE_FROM_ESTIMATE
          - EXPENSES
          - FILE_IMPORT
          - TIMESHEET_IMPORT
          - USER_IMPORT
          - HIDE_PAGES
          - HISTORIC_RATES
          - INVOICING
          - INVOICE_EMAILS
          - INVOICE_REMINDERS
          - LABOR_COST
          - LOCATIONS
          - MANAGER_ROLE
          - MULTI_FACTOR_AUTHENTICATION
          - PROJECT_BUDGET
          - PROJECT_TEMPLATES
          - GRANT_PROJECT_MANAGER_ROLE
          - PRIVATE_PROJECT_ACCESS
          - QUICKBOOKS_INTEGRATION
          - RECURRING_ESTIMATES
          - RECURRING_INVOICES
          - REQUIRED_FIELDS
          - SCHEDULED_REPORTS
          - SCHEDULING
          - SCREENSHOTS
          - SSO
          - SUMMARY_ESTIMATE
          - TARGETS_AND_REMINDERS
          - TASK_RATES
          - TIME_OFF
          - UNLIMITED_REPORTS
          - USER_CUSTOM_FIELDS
          - WHO_CAN_CHANGE_TIMEENTRY_BILLABILITY
          - BREAKS
          - KIOSK_SESSION_DURATION
          - KIOSK_PIN_REQUIRED
          - WHO_CAN_SEE_ALL_TIME_ENTRIES
          - WHO_CAN_SEE_PROJECT_STATUS
          - WHO_CAN_SEE_PUBLIC_PROJECTS_ENTRIES
          - WHO_CAN_SEE_TEAMS_DASHBOARD
          - WORKSPACE_LOCK_TIMEENTRIES
          - WORKSPACE_TIME_AUDIT
          - WORKSPACE_TIME_ROUNDING
          - KIOSK
          - KIOSK_SIX_DIGIT_PIN
          - KIOSK_QR_CODE
          - LIMITED_USERS
          - FORECASTING
          - TIME_TRACKING
          - ATTENDANCE_REPORT
          - WORKSPACE_TRANSFER
          - FAVORITE_ENTRIES
          - SPLIT_TIME_ENTRY
          - CLIENT_CURRENCY
          - SCHEDULING_FORECASTING
          - SCIM
          - UNLIMITED_USER_SEATS
          - BILLABLE_HOURS
          - PROJECT_ESTIMATE
          - CSV_EXPORT
          - XLSX_EXPORT
          - ONE_MONTH_RANGE_REPORTS
          - ONE_YEAR_RANGE_REPORTS
          - SHARED_REPORTS
        ALERTS:
          type: string
          enum:
          - ADD_TIME_FOR_OTHERS
          - ADMIN_PANEL
          - ALERTS
          - APPROVAL
          - AUDIT_LOG
          - AUTOMATIC_LOCK
          - BRANDED_REPORTS
          - BULK_EDIT
          - CUSTOM_FIELDS
          - CUSTOM_REPORTING
          - CUSTOM_SUBDOMAIN
          - CREATION_PERMISSIONS
          - DECIMAL_FORMAT
          - DISABLE_MANUAL_MODE
          - EDIT_MEMBER_PROFILE
          - EXCLUDE_NON_BILLABLE_FROM_ESTIMATE
          - EXPENSES
          - FILE_IMPORT
          - TIMESHEET_IMPORT
          - USER_IMPORT
          - HIDE_PAGES
          - HISTORIC_RATES
          - INVOICING
          - INVOICE_EMAILS
          - INVOIC

# --- truncated at 32 KB (219 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/clockify/refs/heads/main/openapi/clockify-workspace-api-openapi.yml